git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Possible bug: identical lines added/removed in git diff
@ 2018-08-27  1:54 Gabriel Holodak
  2018-08-27 17:47 ` Stefan Beller
  0 siblings, 1 reply; 9+ messages in thread
From: Gabriel Holodak @ 2018-08-27  1:54 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 899 bytes --]

I think I'm running into a bug with git diff on v2.18.0. When I diff
the attached files, part of the diff ends up looking like:
...
 STARTCHAR U+00F0
 ENCODING 240
 SWIDTH 500 0
-DWIDTH 8 0
-BBX 7 12 1 0
-BITMAP
-12
-0C
-14
-22
-02
-3E
-42
-42
-82
-84
-84
-78
+DWIDTH 8 0
+BBX 8 12 0 0
+BITMAP
+1B
+0E
+1E
+33
+03
+3F
+63
+63
+C3
+C6
+C6
+7C
 ENDCHAR
 STARTCHAR U+00F1
...
where the "DWIDTH 8 0" and "BITMAP" lines are removed and added,
despite being identical. It only seems to be happening around this
section of the file, for the U+00F0 character. This also seems close
to a minimal reproduction of the issue. If I git add --patch and stage
a few hunks, then the duplicated lines seem to disappear.

Steps to reproduce:
git diff --no-index unitera_bold_italic.bdf.old unitera_bold_italic.bdf.new
(It also happens inside a repo, this just seemed the easiest way to
demonstrate.)

Gabriel Holodak

[-- Attachment #2: unitera_bold_italic.bdf.new --]
[-- Type: application/octet-stream, Size: 23974 bytes --]

STARTFONT 2.1
FONT --Unitera-Bold-I-Normal--16-160-72-72-C-80-ISO10646-1
SIZE 16 72 72
FONTBOUNDINGBOX 8 16 0 -2
STARTPROPERTIES 23
COPYRIGHT "Copyright (C) 1998-2017 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, Johnnie Weaver, David Corbett, et al. License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html> with the GNU Font Embedding Exception."
FONT_VERSION "0.0.1"
FONT_TYPE "Bitmap"
FAMILY_NAME "Unitera"
WEIGHT_NAME "Bold"
SLANT "I"
SETWIDTH_NAME "Normal"
PIXEL_SIZE 16
POINT_SIZE 160
RESOLUTION_X 72
RESOLUTION_Y 72
SPACING "C"
AVERAGE_WIDTH 80
CHARSET_REGISTRY "ISO10646"
CHARSET_ENCODING "1"
UNDERLINE_POSITION -2
UNDERLINE_THICKNESS 1
CAP_HEIGHT 10
X_HEIGHT 8
FONT_ASCENT 14
FONT_DESCENT 2
DEFAULT_CHAR 65533
_GBDFED_INFO "Edited with gbdfed 1.6."
ENDPROPERTIES
CHARS 210
STARTCHAR U+0020
ENCODING 32
SWIDTH 500 0
DWIDTH 8 0
BBX 0 0 0 0
BITMAP
ENDCHAR
STARTCHAR U+0021
ENCODING 33
SWIDTH 500 0
DWIDTH 8 0
BBX 4 10 2 0
BITMAP
30
30
30
60
60
60
60
00
C0
C0
ENDCHAR
STARTCHAR U+0022
ENCODING 34
SWIDTH 500 0
DWIDTH 8 0
BBX 6 4 1 8
BITMAP
CC
CC
CC
CC
ENDCHAR
STARTCHAR U+0023
ENCODING 35
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1B
1B
36
7F
36
6C
FE
6C
D8
D8
ENDCHAR
STARTCHAR U+0024
ENCODING 36
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
0C
3E
6F
78
78
1E
1E
F6
7C
30
ENDCHAR
STARTCHAR U+0025
ENCODING 37
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
31
6B
6E
34
18
18
2C
7A
DA
8C
ENDCHAR
STARTCHAR U+0026
ENCODING 38
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
1C
36
66
6C
38
72
DE
CC
DC
76
ENDCHAR
STARTCHAR U+0027
ENCODING 39
SWIDTH 500 0
DWIDTH 8 0
BBX 2 4 3 8
BITMAP
C0
C0
C0
C0
ENDCHAR
STARTCHAR U+0028
ENCODING 40
SWIDTH 500 0
DWIDTH 8 0
BBX 5 12 2 -1
BITMAP
18
30
60
60
C0
C0
C0
C0
C0
C0
60
20
ENDCHAR
STARTCHAR U+0029
ENCODING 41
SWIDTH 500 0
DWIDTH 8 0
BBX 5 12 1 -1
BITMAP
20
30
18
18
18
18
18
18
30
30
60
C0
ENDCHAR
STARTCHAR U+002A
ENCODING 42
SWIDTH 500 0
DWIDTH 8 0
BBX 7 7 1 1
BITMAP
08
C8
7E
38
FC
26
20
ENDCHAR
STARTCHAR U+002B
ENCODING 43
SWIDTH 500 0
DWIDTH 8 0
BBX 7 7 1 1
BITMAP
08
08
10
FE
10
20
20
ENDCHAR
STARTCHAR U+002C
ENCODING 44
SWIDTH 500 0
DWIDTH 8 0
BBX 4 4 1 -2
BITMAP
30
30
60
C0
ENDCHAR
STARTCHAR U+002D
ENCODING 45
SWIDTH 500 0
DWIDTH 8 0
BBX 4 1 2 4
BITMAP
F0
ENDCHAR
STARTCHAR U+002E
ENCODING 46
SWIDTH 500 0
DWIDTH 8 0
BBX 4 3 2 0
BITMAP
60
F0
60
ENDCHAR
STARTCHAR U+002F
ENCODING 47
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
03
03
06
0C
18
18
30
60
C0
C0
ENDCHAR
STARTCHAR U+0030
ENCODING 48
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1E
33
63
67
6B
D6
E6
C6
CC
78
ENDCHAR
STARTCHAR U+0031
ENCODING 49
SWIDTH 500 0
DWIDTH 8 0
BBX 6 10 1 0
BITMAP
1C
3C
6C
18
18
18
18
30
30
FC
ENDCHAR
STARTCHAR U+0032
ENCODING 50
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
63
63
03
0E
38
60
C0
C0
FE
ENDCHAR
STARTCHAR U+0033
ENCODING 51
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
63
63
03
3E
06
06
C6
CC
78
ENDCHAR
STARTCHAR U+0034
ENCODING 52
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
06
1E
3E
6C
CC
CC
FE
18
18
18
ENDCHAR
STARTCHAR U+0035
ENCODING 53
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3F
30
60
60
7C
06
06
06
CC
78
ENDCHAR
STARTCHAR U+0036
ENCODING 54
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
0F
18
30
60
7C
C6
C6
C6
CC
78
ENDCHAR
STARTCHAR U+0037
ENCODING 55
SWIDTH 500 0
DWIDTH 8 0
BBX 6 10 1 0
BITMAP
FC
0C
0C
18
18
30
30
60
60
60
ENDCHAR
STARTCHAR U+0038
ENCODING 56
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1E
33
33
33
1E
66
C6
C6
CC
78
ENDCHAR
STARTCHAR U+0039
ENCODING 57
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
7C
C6
C6
C6
7C
0C
0C
18
30
E0
ENDCHAR
STARTCHAR U+003A
ENCODING 58
SWIDTH 500 0
DWIDTH 8 0
BBX 5 8 2 0
BITMAP
30
78
30
00
00
60
F0
60
ENDCHAR
STARTCHAR U+003B
ENCODING 59
SWIDTH 500 0
DWIDTH 8 0
BBX 6 10 1 -2
BITMAP
18
3C
18
00
00
30
78
30
60
C0
ENDCHAR
STARTCHAR U+003C
ENCODING 60
SWIDTH 500 0
DWIDTH 8 0
BBX 6 9 1 0
BITMAP
0C
18
30
60
C0
60
30
18
0C
ENDCHAR
STARTCHAR U+003D
ENCODING 61
SWIDTH 500 0
DWIDTH 8 0
BBX 7 5 1 2
BITMAP
7E
00
00
00
FC
ENDCHAR
STARTCHAR U+003E
ENCODING 62
SWIDTH 500 0
DWIDTH 8 0
BBX 6 9 1 0
BITMAP
C0
60
30
18
0C
18
30
60
C0
ENDCHAR
STARTCHAR U+003F
ENCODING 63
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
7C
C6
C6
06
0C
18
30
00
60
60
ENDCHAR
STARTCHAR U+0040
ENCODING 64
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1E
33
65
6F
DA
DA
DA
CE
60
3E
ENDCHAR
STARTCHAR U+0041
ENCODING 65
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+0042
ENCODING 66
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
33
33
63
7E
66
66
C6
CC
F8
ENDCHAR
STARTCHAR U+0043
ENCODING 67
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
1C
36
66
60
C0
C0
C0
CC
CC
78
ENDCHAR
STARTCHAR U+0044
ENCODING 68
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
33
33
63
63
63
66
C6
CC
F8
ENDCHAR
STARTCHAR U+0045
ENCODING 69
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3F
30
30
60
7C
60
60
C0
C0
FC
ENDCHAR
STARTCHAR U+0046
ENCODING 70
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3F
30
30
60
7C
60
60
C0
C0
C0
ENDCHAR
STARTCHAR U+0047
ENCODING 71
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
1C
36
66
60
C0
DE
CC
CC
DC
74
ENDCHAR
STARTCHAR U+0048
ENCODING 72
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
33
33
33
66
7E
66
66
CC
CC
CC
ENDCHAR
STARTCHAR U+0049
ENCODING 73
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3F
0C
0C
18
18
18
18
30
30
FC
ENDCHAR
STARTCHAR U+004A
ENCODING 74
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1F
06
06
06
0C
0C
0C
CC
D8
70
ENDCHAR
STARTCHAR U+004B
ENCODING 75
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
33
36
3C
78
70
70
78
D8
CC
CC
ENDCHAR
STARTCHAR U+004C
ENCODING 76
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
30
30
30
60
60
60
60
C0
C0
FE
ENDCHAR
STARTCHAR U+004D
ENCODING 77
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
21
33
37
7F
7E
7E
D6
CC
CC
CC
ENDCHAR
STARTCHAR U+004E
ENCODING 78
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
23
33
33
77
7E
7E
EE
CC
CC
C4
ENDCHAR
STARTCHAR U+004F
ENCODING 79
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1E
33
63
63
C3
C3
C6
C6
CC
78
ENDCHAR
STARTCHAR U+0050
ENCODING 80
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
33
33
63
7E
60
60
C0
C0
C0
ENDCHAR
STARTCHAR U+0051
ENCODING 81
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 -2
BITMAP
1E
33
63
63
C3
C3
C6
F6
DC
7C
06
02
ENDCHAR
STARTCHAR U+0052
ENCODING 82
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
33
33
63
7E
6C
6C
C6
C6
C6
ENDCHAR
STARTCHAR U+0053
ENCODING 83
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1E
33
63
60
30
0C
06
C6
CC
78
ENDCHAR
STARTCHAR U+0054
ENCODING 84
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
FE
18
18
30
30
30
30
60
60
60
ENDCHAR
STARTCHAR U+0055
ENCODING 85
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
66
66
66
C6
C6
CC
CC
CC
D8
70
ENDCHAR
STARTCHAR U+0056
ENCODING 86
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
C6
C6
CC
CC
78
78
70
70
20
20
ENDCHAR
STARTCHAR U+0057
ENCODING 87
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
33
33
33
6B
7E
7E
7E
EC
CC
84
ENDCHAR
STARTCHAR U+0058
ENCODING 88
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
63
66
36
3C
18
18
3C
6C
66
C6
ENDCHAR
STARTCHAR U+0059
ENCODING 89
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 0
BITMAP
C6
C6
CC
78
30
30
30
60
60
60
ENDCHAR
STARTCHAR U+005A
ENCODING 90
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
7F
03
06
0C
18
30
60
C0
C0
FE
ENDCHAR
STARTCHAR U+005B
ENCODING 91
SWIDTH 500 0
DWIDTH 8 0
BBX 6 12 2 -1
BITMAP
3C
30
30
30
60
60
60
60
C0
C0
C0
F0
ENDCHAR
STARTCHAR U+005C
ENCODING 92
SWIDTH 500 0
DWIDTH 8 0
BBX 5 10 1 0
BITMAP
C0
C0
60
60
60
30
30
30
18
18
ENDCHAR
STARTCHAR U+005D
ENCODING 93
SWIDTH 500 0
DWIDTH 8 0
BBX 6 12 1 -1
BITMAP
3C
0C
0C
0C
18
18
18
18
30
30
30
F0
ENDCHAR
STARTCHAR U+005E
ENCODING 94
SWIDTH 500 0
DWIDTH 8 0
BBX 7 3 1 9
BITMAP
38
6C
C6
ENDCHAR
STARTCHAR U+005F
ENCODING 95
SWIDTH 500 0
DWIDTH 8 0
BBX 7 1 1 -1
BITMAP
FE
ENDCHAR
STARTCHAR U+0060
ENCODING 96
SWIDTH 500 0
DWIDTH 8 0
BBX 4 3 2 10
BITMAP
C0
60
30
ENDCHAR
STARTCHAR U+0061
ENCODING 97
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+0062
ENCODING 98
SWIDTH 500 0
DWIDTH 8 0
BBX 8 11 0 0
BITMAP
30
30
30
6E
7B
63
63
63
C6
F6
DC
ENDCHAR
STARTCHAR U+0063
ENCODING 99
SWIDTH 500 0
DWIDTH 8 0
BBX 7 8 1 0
BITMAP
3C
66
60
C0
C0
C0
CC
78
ENDCHAR
STARTCHAR U+0064
ENCODING 100
SWIDTH 500 0
DWIDTH 8 0
BBX 8 11 0 0
BITMAP
03
03
03
3A
6E
C6
C6
C6
CC
DC
74
ENDCHAR
STARTCHAR U+0065
ENCODING 101
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
3E
63
63
7E
C0
C0
C6
7C
ENDCHAR
STARTCHAR U+0066
ENCODING 102
SWIDTH 500 0
DWIDTH 8 0
BBX 7 11 1 0
BITMAP
0E
18
18
18
FE
30
30
30
60
60
60
ENDCHAR
STARTCHAR U+0067
ENCODING 103
SWIDTH 500 0
DWIDTH 8 0
BBX 8 11 0 -2
BITMAP
01
3F
66
66
66
3C
60
78
CC
CC
78
ENDCHAR
STARTCHAR U+0068
ENCODING 104
SWIDTH 500 0
DWIDTH 8 0
BBX 8 11 0 0
BITMAP
30
30
30
6E
7B
63
63
63
C6
C6
C6
ENDCHAR
STARTCHAR U+0069
ENCODING 105
SWIDTH 500 0
DWIDTH 8 0
BBX 6 11 1 0
BITMAP
0C
0C
00
38
18
18
18
30
30
30
FC
ENDCHAR
STARTCHAR U+006A
ENCODING 106
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 -2
BITMAP
03
03
00
0E
06
06
06
0C
0C
0C
0C
D8
70
ENDCHAR
STARTCHAR U+006B
ENCODING 107
SWIDTH 500 0
DWIDTH 8 0
BBX 7 11 1 0
BITMAP
30
30
30
66
6C
78
70
78
D8
CC
CC
ENDCHAR
STARTCHAR U+006C
ENCODING 108
SWIDTH 500 0
DWIDTH 8 0
BBX 6 11 1 0
BITMAP
1C
0C
0C
18
18
18
18
30
30
30
FC
ENDCHAR
STARTCHAR U+006D
ENCODING 109
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
76
7F
6B
6B
6B
D6
D6
D6
ENDCHAR
STARTCHAR U+006E
ENCODING 110
SWIDTH 500 0
DWIDTH 8 0
BBX 7 8 1 0
BITMAP
5C
76
66
66
C6
CC
CC
CC
ENDCHAR
STARTCHAR U+006F
ENCODING 111
SWIDTH 500 0
DWIDTH 8 0
BBX 7 8 1 0
BITMAP
3C
66
66
C6
C6
CC
CC
78
ENDCHAR
STARTCHAR U+0070
ENCODING 112
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 -2
BITMAP
3E
33
33
63
63
66
76
DC
C0
C0
ENDCHAR
STARTCHAR U+0071
ENCODING 113
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 -2
BITMAP
3D
67
63
C6
C6
C6
CE
7C
0C
0C
ENDCHAR
STARTCHAR U+0072
ENCODING 114
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
3E
73
63
60
60
C0
C0
C0
ENDCHAR
STARTCHAR U+0073
ENCODING 115
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
1E
33
60
30
0C
06
CC
78
ENDCHAR
STARTCHAR U+0074
ENCODING 116
SWIDTH 500 0
DWIDTH 8 0
BBX 6 10 1 0
BITMAP
18
18
30
FC
30
30
60
60
60
38
ENDCHAR
STARTCHAR U+0075
ENCODING 117
SWIDTH 500 0
DWIDTH 8 0
BBX 7 8 1 0
BITMAP
66
66
66
C6
CC
CC
DC
74
ENDCHAR
STARTCHAR U+0076
ENCODING 118
SWIDTH 500 0
DWIDTH 8 0
BBX 6 8 2 0
BITMAP
CC
CC
D8
D8
70
70
60
60
ENDCHAR
STARTCHAR U+0077
ENCODING 119
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
63
6B
6B
6B
D6
D6
FE
6C
ENDCHAR
STARTCHAR U+0078
ENCODING 120
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
63
36
3C
18
18
3C
6C
C6
ENDCHAR
STARTCHAR U+0079
ENCODING 121
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 -2
BITMAP
66
66
66
CC
CC
CC
7C
18
18
F0
ENDCHAR
STARTCHAR U+007A
ENCODING 122
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
7F
03
06
1C
38
60
C0
FE
ENDCHAR
STARTCHAR U+007B
ENCODING 123
SWIDTH 500 0
DWIDTH 8 0
BBX 6 13 1 -2
BITMAP
1C
30
30
30
30
60
C0
60
60
C0
C0
C0
70
ENDCHAR
STARTCHAR U+007C
ENCODING 124
SWIDTH 500 0
DWIDTH 8 0
BBX 4 14 2 -2
BITMAP
30
30
30
30
60
60
60
60
60
60
C0
C0
C0
C0
ENDCHAR
STARTCHAR U+007D
ENCODING 125
SWIDTH 500 0
DWIDTH 8 0
BBX 6 13 1 -2
BITMAP
38
0C
0C
0C
18
18
0C
18
30
30
30
30
E0
ENDCHAR
STARTCHAR U+007E
ENCODING 126
SWIDTH 500 0
DWIDTH 8 0
BBX 7 3 1 5
BITMAP
66
D6
CC
ENDCHAR
STARTCHAR U+00A0
ENCODING 160
SWIDTH 500 0
DWIDTH 8 0
BBX 0 0 0 0
BITMAP
ENDCHAR
STARTCHAR U+00A1
ENCODING 161
SWIDTH 500 0
DWIDTH 8 0
BBX 4 10 2 0
BITMAP
30
30
00
60
60
60
60
C0
C0
C0
ENDCHAR
STARTCHAR U+00A2
ENCODING 162
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
0C
0C
3E
6F
D8
D8
DA
7C
30
30
ENDCHAR
STARTCHAR U+00A3
ENCODING 163
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
07
0C
18
18
7E
18
30
30
7C
C6
ENDCHAR
STARTCHAR U+00A4
ENCODING 164
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 1
BITMAP
63
3E
36
66
66
6C
7C
C6
ENDCHAR
STARTCHAR U+00A5
ENCODING 165
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
63
36
3C
18
7F
18
FE
30
30
30
ENDCHAR
STARTCHAR U+00A6
ENCODING 166
SWIDTH 500 0
DWIDTH 8 0
BBX 3 10 3 0
BITMAP
60
60
60
60
00
00
C0
C0
C0
C0
ENDCHAR
STARTCHAR U+00A7
ENCODING 167
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
63
60
3C
66
66
3C
06
C6
7C
ENDCHAR
STARTCHAR U+00A8
ENCODING 168
SWIDTH 500 0
DWIDTH 8 0
BBX 5 2 3 12
BITMAP
D8
D8
ENDCHAR
STARTCHAR U+00A9
ENCODING 169
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1C
36
6B
55
A1
A1
AA
D6
6C
38
ENDCHAR
STARTCHAR U+00AA
ENCODING 170
SWIDTH 500 0
DWIDTH 8 0
BBX 7 7 1 5
BITMAP
3C
06
3E
66
7C
00
FC
ENDCHAR
STARTCHAR U+00AB
ENCODING 171
SWIDTH 500 0
DWIDTH 8 0
BBX 7 9 1 0
BITMAP
36
36
6C
6C
D8
D8
6C
6C
6C
ENDCHAR
STARTCHAR U+00AC
ENCODING 172
SWIDTH 500 0
DWIDTH 8 0
BBX 6 4 1 0
BITMAP
FC
0C
18
18
ENDCHAR
STARTCHAR U+00AE
ENCODING 174
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3C
66
5B
D5
9D
B9
AB
EE
66
3C
ENDCHAR
STARTCHAR U+00AF
ENCODING 175
SWIDTH 500 0
DWIDTH 8 0
BBX 6 1 1 11
BITMAP
FC
ENDCHAR
STARTCHAR U+00B0
ENCODING 176
SWIDTH 500 0
DWIDTH 8 0
BBX 5 4 2 10
BITMAP
70
D8
D8
70
ENDCHAR
STARTCHAR U+00B1
ENCODING 177
SWIDTH 500 0
DWIDTH 8 0
BBX 7 9 1 1
BITMAP
08
08
08
7E
10
10
10
00
FC
ENDCHAR
STARTCHAR U+00B2
ENCODING 178
SWIDTH 500 0
DWIDTH 8 0
BBX 7 7 1 5
BITMAP
3C
66
06
3C
60
C0
FC
ENDCHAR
STARTCHAR U+00B3
ENCODING 179
SWIDTH 500 0
DWIDTH 8 0
BBX 7 7 1 5
BITMAP
3C
66
06
3C
0C
CC
78
ENDCHAR
STARTCHAR U+00B4
ENCODING 180
SWIDTH 500 0
DWIDTH 8 0
BBX 4 3 3 10
BITMAP
30
60
C0
ENDCHAR
STARTCHAR U+00B5
ENCODING 181
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 -2
BITMAP
1B
1B
1B
33
36
36
3E
7B
40
C0
ENDCHAR
STARTCHAR U+00B6
ENCODING 182
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 -1
BITMAP
3F
7B
FB
F3
F6
76
16
16
26
2C
2C
3C
ENDCHAR
STARTCHAR U+00B7
ENCODING 183
SWIDTH 500 0
DWIDTH 8 0
BBX 4 3 2 3
BITMAP
60
F0
60
ENDCHAR
STARTCHAR U+00B8
ENCODING 184
SWIDTH 500 0
DWIDTH 8 0
BBX 4 2 1 -2
BITMAP
30
E0
ENDCHAR
STARTCHAR U+00B9
ENCODING 185
SWIDTH 500 0
DWIDTH 8 0
BBX 4 7 3 5
BITMAP
30
70
F0
30
60
60
60
ENDCHAR
STARTCHAR U+00BA
ENCODING 186
SWIDTH 500 0
DWIDTH 8 0
BBX 7 7 1 5
BITMAP
3C
66
C6
CC
78
00
FC
ENDCHAR
STARTCHAR U+00BB
ENCODING 187
SWIDTH 500 0
DWIDTH 8 0
BBX 7 9 0 0
BITMAP
6C
6C
6C
36
36
6C
6C
D8
D8
ENDCHAR
STARTCHAR U+00BC
ENCODING 188
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
32
76
34
6C
78
36
6E
56
DC
8C
ENDCHAR
STARTCHAR U+00BD
ENCODING 189
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
32
76
34
6C
78
3E
6A
46
CC
9E
ENDCHAR
STARTCHAR U+00BE
ENCODING 190
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
72
16
74
2C
F8
36
6E
56
DC
8C
ENDCHAR
STARTCHAR U+00BF
ENCODING 191
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
0C
0C
00
18
30
60
C0
C6
C6
7C
ENDCHAR
STARTCHAR U+00C0
ENCODING 192
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 0 0
BITMAP
1C
0E
00
00
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+00C1
ENCODING 193
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
07
0E
00
00
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+00C2
ENCODING 194
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
0C
1E
33
00
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+00C3
ENCODING 195
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
36
00
00
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+00C4
ENCODING 196
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
1B
00
00
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+00C5
ENCODING 197
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
0E
1B
0E
00
0C
1E
36
66
66
7E
66
CC
CC
CC
ENDCHAR
STARTCHAR U+00C6
ENCODING 198
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1F
3C
6C
6C
7E
D8
D8
D8
D8
DE
ENDCHAR
STARTCHAR U+00C7
ENCODING 199
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 -2
BITMAP
1C
36
66
60
C0
C0
C0
CC
CC
78
30
E0
ENDCHAR
STARTCHAR U+00C8
ENCODING 200
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1C
0E
00
00
3F
30
30
60
7C
60
60
C0
C0
FC
ENDCHAR
STARTCHAR U+00C9
ENCODING 201
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
07
0E
00
00
3F
30
30
60
7C
60
60
C0
C0
FC
ENDCHAR
STARTCHAR U+00CA
ENCODING 202
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
0C
1E
33
00
3F
30
30
60
7C
60
60
C0
C0
FC
ENDCHAR
STARTCHAR U+00CB
ENCODING 203
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
1B
00
00
3F
30
30
60
7C
60
60
C0
C0
FC
ENDCHAR
STARTCHAR U+00CC
ENCODING 204
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1C
0E
00
00
3F
0C
0C
18
18
18
18
30
30
FC
ENDCHAR
STARTCHAR U+00CD
ENCODING 205
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
07
0E
00
00
3F
0C
0C
18
18
18
18
30
30
FC
ENDCHAR
STARTCHAR U+00CE
ENCODING 206
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
0C
1E
33
00
3F
0C
0C
18
18
18
18
30
30
FC
ENDCHAR
STARTCHAR U+00CF
ENCODING 207
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
1B
00
00
3F
0C
0C
18
18
18
18
30
30
FC
ENDCHAR
STARTCHAR U+00D0
ENCODING 208
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
3E
33
33
63
FB
63
66
C6
CC
F8
ENDCHAR
STARTCHAR U+00D1
ENCODING 209
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
36
00
00
23
33
33
77
7E
7E
EE
CC
CC
C4
ENDCHAR
STARTCHAR U+00D2
ENCODING 210
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1C
0E
00
00
1E
33
63
63
C3
C3
C6
C6
CC
78
ENDCHAR
STARTCHAR U+00D3
ENCODING 211
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
07
0E
00
00
1E
33
63
63
C3
C3
C6
C6
CC
78
ENDCHAR
STARTCHAR U+00D4
ENCODING 212
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
0C
1E
33
00
1E
33
63
63
C3
C3
C6
C6
CC
78
ENDCHAR
STARTCHAR U+00D5
ENCODING 213
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
36
00
00
1E
33
63
63
C3
C3
C6
C6
CC
78
ENDCHAR
STARTCHAR U+00D6
ENCODING 214
SWIDTH 500 0
DWIDTH 8 0
BBX 8 14 0 0
BITMAP
1B
1B
00
00
1E
33
63
63
C3
C3
C6
C6
CC
78
ENDCHAR
STARTCHAR U+00D7
ENCODING 215
SWIDTH 500 0
DWIDTH 8 0
BBX 7 5 1 2
BITMAP
66
3C
38
78
CC
ENDCHAR
STARTCHAR U+00D8
ENCODING 216
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 -1
BITMAP
01
1F
36
67
6F
DB
DB
F6
E6
6C
F8
80
ENDCHAR
STARTCHAR U+00D9
ENCODING 217
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 0
BITMAP
38
1C
00
00
66
66
66
C6
C6
CC
CC
CC
D8
70
ENDCHAR
STARTCHAR U+00DA
ENCODING 218
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 0
BITMAP
0E
1C
00
00
66
66
66
C6
C6
CC
CC
CC
D8
70
ENDCHAR
STARTCHAR U+00DB
ENCODING 219
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 0
BITMAP
18
3C
66
00
66
66
66
C6
C6
CC
CC
CC
D8
70
ENDCHAR
STARTCHAR U+00DC
ENCODING 220
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 0
BITMAP
36
36
00
00
66
66
66
C6
C6
CC
CC
CC
D8
70
ENDCHAR
STARTCHAR U+00DD
ENCODING 221
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 0
BITMAP
0E
1C
00
00
C6
C6
CC
78
30
30
30
60
60
60
ENDCHAR
STARTCHAR U+00DE
ENCODING 222
SWIDTH 500 0
DWIDTH 8 0
BBX 8 11 0 0
BITMAP
30
30
3E
33
63
63
66
7C
C0
C0
C0
ENDCHAR
STARTCHAR U+00DF
ENCODING 223
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
1E
33
33
36
6C
64
66
C6
D6
DC
ENDCHAR
STARTCHAR U+00E0
ENCODING 224
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
1C
0E
00
00
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+00E1
ENCODING 225
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
07
0E
00
00
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+00E2
ENCODING 226
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 0
BITMAP
0C
1E
33
00
00
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+00E3
ENCODING 227
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
1B
36
00
00
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+00E4
ENCODING 228
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
1B
1B
00
00
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+00E5
ENCODING 229
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 0
BITMAP
0E
1B
0E
00
00
3E
63
03
3F
63
C6
CE
7A
ENDCHAR
STARTCHAR U+00E6
ENCODING 230
SWIDTH 500 0
DWIDTH 8 0
BBX 8 8 0 0
BITMAP
3E
6D
0D
3E
58
D8
DA
7C
ENDCHAR
STARTCHAR U+00E7
ENCODING 231
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 -2
BITMAP
3C
66
60
C0
C0
C0
CC
78
30
E0
ENDCHAR
STARTCHAR U+00E8
ENCODING 232
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
1C
0E
00
00
3E
63
63
7E
C0
C0
C6
7C
ENDCHAR
STARTCHAR U+00E9
ENCODING 233
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
07
0E
00
00
3E
63
63
7E
C0
C0
C6
7C
ENDCHAR
STARTCHAR U+00EA
ENCODING 234
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 0
BITMAP
0C
1E
33
00
00
3E
63
63
7E
C0
C0
C6
7C
ENDCHAR
STARTCHAR U+00EB
ENCODING 235
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
1B
1B
00
00
3E
63
63
7E
C0
C0
C6
7C
ENDCHAR
STARTCHAR U+00EC
ENCODING 236
SWIDTH 500 0
DWIDTH 8 0
BBX 6 12 1 0
BITMAP
38
1C
00
00
38
18
18
18
30
30
30
FC
ENDCHAR
STARTCHAR U+00ED
ENCODING 237
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
0E
1C
00
00
38
18
18
18
30
30
30
FC
ENDCHAR
STARTCHAR U+00EE
ENCODING 238
SWIDTH 500 0
DWIDTH 8 0
BBX 7 13 1 0
BITMAP
18
3C
66
00
00
38
18
18
18
30
30
30
FC
ENDCHAR
STARTCHAR U+00EF
ENCODING 239
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
36
36
00
00
38
18
18
18
30
30
30
FC
ENDCHAR
STARTCHAR U+00F0
ENCODING 240
SWIDTH 500 0
DWIDTH 8 0
BBX 8 12 0 0
BITMAP
1B
0E
1E
33
03
3F
63
63
C3
C6
C6
7C
ENDCHAR
STARTCHAR U+00F1
ENCODING 241
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
36
6C
00
00
5C
76
66
66
C6
CC
CC
CC
ENDCHAR
STARTCHAR U+00F2
ENCODING 242
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
38
1C
00
00
3C
66
66
C6
C6
CC
CC
78
ENDCHAR
STARTCHAR U+00F3
ENCODING 243
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
0E
1C
00
00
3C
66
66
C6
C6
CC
CC
78
ENDCHAR
STARTCHAR U+00F4
ENCODING 244
SWIDTH 500 0
DWIDTH 8 0
BBX 7 13 1 0
BITMAP
18
3C
66
00
00
3C
66
66
C6
C6
CC
CC
78
ENDCHAR
STARTCHAR U+00F5
ENCODING 245
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
36
6C
00
00
3C
66
66
C6
C6
CC
CC
78
ENDCHAR
STARTCHAR U+00F6
ENCODING 246
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
36
36
00
00
3C
66
66
C6
C6
CC
CC
78
ENDCHAR
STARTCHAR U+00F7
ENCODING 247
SWIDTH 500 0
DWIDTH 8 0
BBX 6 7 1 1
BITMAP
18
18
00
FC
00
60
60
ENDCHAR
STARTCHAR U+00F8
ENCODING 248
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 1 -1
BITMAP
02
3E
6C
CE
DE
F6
E6
6C
F8
80
ENDCHAR
STARTCHAR U+00F9
ENCODING 249
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
38
1C
00
00
66
66
66
C6
CC
CC
DC
74
ENDCHAR
STARTCHAR U+00FA
ENCODING 250
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
0E
1C
00
00
66
66
66
C6
CC
CC
DC
74
ENDCHAR
STARTCHAR U+00FB
ENCODING 251
SWIDTH 500 0
DWIDTH 8 0
BBX 7 13 1 0
BITMAP
18
3C
66
00
00
66
66
66
C6
CC
CC
DC
74
ENDCHAR
STARTCHAR U+00FC
ENCODING 252
SWIDTH 500 0
DWIDTH 8 0
BBX 7 12 1 0
BITMAP
36
36
00
00
66
66
66
C6
CC
CC
DC
74
ENDCHAR
STARTCHAR U+00FD
ENCODING 253
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 -2
BITMAP
0E
1C
00
00
66
66
66
CC
CC
CC
7C
18
18
F0
ENDCHAR
STARTCHAR U+00FE
ENCODING 254
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 -2
BITMAP
30
30
30
3E
7B
63
63
63
63
76
DC
C0
C0
ENDCHAR
STARTCHAR U+00FF
ENCODING 255
SWIDTH 500 0
DWIDTH 8 0
BBX 7 14 1 -2
BITMAP
36
36
00
00
66
66
66
CC
CC
CC
7C
18
18
F0
ENDCHAR
STARTCHAR U+0394
ENCODING 916
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
08
08
1C
14
34
24
66
42
C2
FE
ENDCHAR
STARTCHAR U+03A0
ENCODING 928
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
7F
36
36
6C
6C
6C
6C
D8
D8
D8
ENDCHAR
STARTCHAR U+03A3
ENCODING 931
SWIDTH 500 0
DWIDTH 8 0
BBX 8 10 0 0
BITMAP
7F
60
30
30
18
18
30
60
C0
FE
ENDCHAR
STARTCHAR U+03BB
ENCODING 955
SWIDTH 500 0
DWIDTH 8 0
BBX 7 10 0 0
BITMAP
30
18
08
08
1C
34
24
66
C2
82
ENDCHAR
STARTCHAR U+2010
ENCODING 8208
SWIDTH 500 0
DWIDTH 8 0
BBX 4 1 2 4
BITMAP
F0
ENDCHAR
STARTCHAR U+2011
ENCODING 8209
SWIDTH 500 0
DWIDTH 8 0
BBX 4 1 2 4
BITMAP
F0
ENDCHAR
STARTCHAR U+2012
ENCODING 8210
SWIDTH 500 0
DWIDTH 8 0
BBX 7 1 1 4
BITMAP
FC
ENDCHAR
STARTCHAR U+2013
ENCODING 8211
SWIDTH 500 0
DWIDTH 8 0
BBX 6 1 1 4
BITMAP
FC
ENDCHAR
STARTCHAR U+2014
ENCODING 8212
SWIDTH 500 0
DWIDTH 8 0
BBX 8 1 0 4
BITMAP
FF
ENDCHAR
STARTCHAR U+2015
ENCODING 8213
SWIDTH 500 0
DWIDTH 8 0
BBX 8 1 0 4
BITMAP
FF
ENDCHAR
STARTCHAR U+2018
ENCODING 8216
SWIDTH 500 0
DWIDTH 8 0
BBX 4 4 2 8
BITMAP
30
60
C0
E0
ENDCHAR
STARTCHAR U+2019
ENCODING 8217
SWIDTH 500 0
DWIDTH 8 0
BBX 4 4 2 8
BITMAP
70
30
60
C0
ENDCHAR
STARTCHAR U+201A
ENCODING 8218
SWIDTH 500 0
DWIDTH 8 0
BBX 4 4 1 -2
BITMAP
70
30
60
C0
ENDCHAR
STARTCHAR U+201B
ENCODING 8219
SWIDTH 500 0
DWIDTH 8 0
BBX 4 4 3 8
BITMAP
70
E0
C0
60
ENDCHAR
STARTCHAR U+201C
ENCODING 8220
SWIDTH 500 0
DWIDTH 8 0
BBX 8 4 0 8
BITMAP
33
66
CC
EE
ENDCHAR
STARTCHAR U+201D
ENCODING 8221
SWIDTH 500 0
DWIDTH 8 0
BBX 8 4 0 8
BITMAP
77
33
66
CC
ENDCHAR
STARTCHAR U+201E
ENCODING 8222
SWIDTH 500 0
DWIDTH 8 0
BBX 8 4 0 -2
BITMAP
77
33
66
CC
ENDCHAR
STARTCHAR U+201F
ENCODING 8223
SWIDTH 500 0
DWIDTH 8 0
BBX 8 4 0 8
BITMAP
77
EE
CC
66
ENDCHAR
STARTCHAR U+27E6
ENCODING 10214
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 -1
BITMAP
3F
36
36
36
6C
6C
6C
6C
6C
D8
D8
D8
FC
ENDCHAR
STARTCHAR U+27E7
ENCODING 10215
SWIDTH 500 0
DWIDTH 8 0
BBX 8 13 0 -1
BITMAP
3F
1B
1B
1B
36
36
36
36
36
6C
6C
6C
FC
ENDCHAR
ENDFONT

[-- Attachment #3: unitera_bold_italic.bdf.old --]
[-- Type: application/x-trash, Size: 23959 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-27  1:54 Possible bug: identical lines added/removed in git diff Gabriel Holodak
@ 2018-08-27 17:47 ` Stefan Beller
  2018-08-30  2:10   ` Gabriel Holodak
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Beller @ 2018-08-27 17:47 UTC (permalink / raw)
  To: gthepiper; +Cc: git

On Sun, Aug 26, 2018 at 6:54 PM Gabriel Holodak <gthepiper@gmail.com> wrote:
>
> I think I'm running into a bug with git diff on v2.18.0.

I cannot reproduce with the two files attached.

I suspected you might have a different diff algorithm configured,
so I tested
    git diff --no-index old new
    git diff --patience --no-index old new
    git diff --histogram --no-index old new

all of which do not reproduce the issue.

Are there any encoding issues locally (Which platform
are you on?) or in transit (Could you re-download the files
from [1] and confirm it still produces this bug?)

[1] https://public-inbox.org/git/CAE6=WB_4_PhjfQpubFcYkNKejfDr22s-y0nPQKw5Yd4GVaN4Yw@mail.gmail.com/


> where the "DWIDTH 8 0" and "BITMAP" lines are removed and added,
> despite being identical. It only seems to be happening around this
> section of the file, for the U+00F0 character. This also seems close
> to a minimal reproduction of the issue.

Could you cut down to a real minimal reproduction, i.e. just these 20
lines or so?

>  If I git add --patch and stage
> a few hunks, then the duplicated lines seem to disappear.

Do you have any smudge filters or configuration regarding
line endings?

Are the lines really different or the same ? (Can you inspect with a
hex editor, maybe there are different kinds of invisible white spaces?)

> Steps to reproduce:
> git diff --no-index unitera_bold_italic.bdf.old unitera_bold_italic.bdf.new
> (It also happens inside a repo, this just seemed the easiest way to
> demonstrate.)

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-27 17:47 ` Stefan Beller
@ 2018-08-30  2:10   ` Gabriel Holodak
  2018-08-30  2:54     ` Jeff King
  0 siblings, 1 reply; 9+ messages in thread
From: Gabriel Holodak @ 2018-08-30  2:10 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git

I did have some possibly interfering settings in my .gitconfig
previously. I removed everything, so all the commands I'll describe
were run with an empty config.

On Mon, Aug 27, 2018 at 1:47 PM Stefan Beller <sbeller@google.com> wrote:
> I suspected you might have a different diff algorithm configured,
> so I tested
>     git diff --no-index old new
>     git diff --patience --no-index old new
>     git diff --histogram --no-index old new
>
> all of which do not reproduce the issue.

I don't believe I had any settings to change the algorithm. Using any
of --minimal, --patience, or --histogram seems to fix the issue. It
still occurs with --diff-algorithm=default. I also tried
--no-indent-heuristic, which had no effect.

> Are there any encoding issues locally (Which platform
> are you on?) or in transit (Could you re-download the files
> from [1] and confirm it still produces this bug?)
>
> [1] https://public-inbox.org/git/CAE6=WB_4_PhjfQpubFcYkNKejfDr22s-y0nPQKw5Yd4GVaN4Yw@mail.gmail.com/

I should have mentioned before, this is on Arch Linux. I can reproduce
from the downloaded files. I can also reproduce on macOS 10.13.6, with
git 2.18.0.

> Could you cut down to a real minimal reproduction, i.e. just these 20
> lines or so?

I'm working on getting down to a minimal reproduction, a few lines at
a time. One thing that seems strange: as I've removed lines, there are
a bunch of lines that don't matter. Then I'll find some lines that, if
removed, completely fix the issue. But the ordering for these
apparently important lines doesn't matter. They just have to be
somewhere in the file to cause the duplicated diffs.

I'll upload again when I've figured out all the unimportant lines to remove.

> Do you have any smudge filters or configuration regarding
> line endings?

No filters, I did have core.autocrlf = input. But as I mentioned, I
can also reproduce with an empty config.

> Are the lines really different or the same ? (Can you inspect with a
> hex editor, maybe there are different kinds of invisible white spaces?)

Yep, the lines in question are identical.

Thanks for looking into this.
Gabriel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-30  2:10   ` Gabriel Holodak
@ 2018-08-30  2:54     ` Jeff King
  2018-08-30 19:16       ` Stefan Beller
  0 siblings, 1 reply; 9+ messages in thread
From: Jeff King @ 2018-08-30  2:54 UTC (permalink / raw)
  To: Gabriel Holodak; +Cc: Stefan Beller, git

On Wed, Aug 29, 2018 at 10:10:25PM -0400, Gabriel Holodak wrote:

> > Could you cut down to a real minimal reproduction, i.e. just these 20
> > lines or so?
> 
> I'm working on getting down to a minimal reproduction, a few lines at
> a time. One thing that seems strange: as I've removed lines, there are
> a bunch of lines that don't matter. Then I'll find some lines that, if
> removed, completely fix the issue. But the ordering for these
> apparently important lines doesn't matter. They just have to be
> somewhere in the file to cause the duplicated diffs.
> 
> I'll upload again when I've figured out all the unimportant lines to remove.

Yeah, I reproduced based on your initial post, but noticed that when I
cut it down the problem went away.

An easy and pretty mechanical reproduction is:

  git diff --no-index unitera_bold_italic.bdf.{old,new} |
  sed -ne '/STARTCHAR U+00F0/,/ENDCHAR/p'

which shows a hunk that could easily be reduced by its first line
("DWIDTH 8 0"), and which has a common line in the middle of -/+ run.
But if we cut it down to the lines in that hunk, like this:

  for i in unitera_bold_italic.bdf.{old,new}; do
    sed -ne '/STARTCHAR U+00F0/,/ENDCHAR/p' <$i >$i.cut
  done
  git diff --no-index unitera_bold_italic.bdf.{old,new}.cut

then those two lines become context.

I note also that GNU "diff -u" gets this case right.

> > Do you have any smudge filters or configuration regarding
> > line endings?
> 
> No filters, I did have core.autocrlf = input. But as I mentioned, I
> can also reproduce with an empty config.

Me too. Amusingly, if you have diff.colorMoved configured, the context
lines appear as moves, showing that we really do know they're the same
(but that happens as post-diff processing, so I am not at all surprised
that it is orthogonal to the original issue).

-Peff

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-30  2:54     ` Jeff King
@ 2018-08-30 19:16       ` Stefan Beller
  2018-08-30 19:20         ` Jeff King
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Beller @ 2018-08-30 19:16 UTC (permalink / raw)
  To: Jeff King; +Cc: Gabriel Holodak, git

On Wed, Aug 29, 2018 at 7:54 PM Jeff King <peff@peff.net> wrote:
>
> On Wed, Aug 29, 2018 at 10:10:25PM -0400, Gabriel Holodak wrote:
>
> > > Could you cut down to a real minimal reproduction, i.e. just these 20
> > > lines or so?
> >
> > I'm working on getting down to a minimal reproduction, a few lines at
> > a time. One thing that seems strange: as I've removed lines, there are
> > a bunch of lines that don't matter. Then I'll find some lines that, if
> > removed, completely fix the issue. But the ordering for these
> > apparently important lines doesn't matter. They just have to be
> > somewhere in the file to cause the duplicated diffs.
> >
> > I'll upload again when I've figured out all the unimportant lines to remove.
>
> Yeah, I reproduced based on your initial post, but noticed that when I
> cut it down the problem went away.

Oh, I had to look further down than I did initially. Now I can reproduce it
from the initial data as well.

Note that it goes away with --minimal.

I have a patch cooking (which was sent out as
https://public-inbox.org/git/20180810221857.87399-1-sbeller@google.com/)

and one of the weaknesses in that patch is the lack of explanation on
when the heuristic is applied as I have not fully understood it yet.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-30 19:16       ` Stefan Beller
@ 2018-08-30 19:20         ` Jeff King
  2018-08-30 19:28           ` Stefan Beller
  0 siblings, 1 reply; 9+ messages in thread
From: Jeff King @ 2018-08-30 19:20 UTC (permalink / raw)
  To: Stefan Beller; +Cc: Gabriel Holodak, git

On Thu, Aug 30, 2018 at 12:16:22PM -0700, Stefan Beller wrote:

> On Wed, Aug 29, 2018 at 7:54 PM Jeff King <peff@peff.net> wrote:
> >
> > On Wed, Aug 29, 2018 at 10:10:25PM -0400, Gabriel Holodak wrote:
> >
> > > > Could you cut down to a real minimal reproduction, i.e. just these 20
> > > > lines or so?
> > >
> > > I'm working on getting down to a minimal reproduction, a few lines at
> > > a time. One thing that seems strange: as I've removed lines, there are
> > > a bunch of lines that don't matter. Then I'll find some lines that, if
> > > removed, completely fix the issue. But the ordering for these
> > > apparently important lines doesn't matter. They just have to be
> > > somewhere in the file to cause the duplicated diffs.
> > >
> > > I'll upload again when I've figured out all the unimportant lines to remove.
> >
> > Yeah, I reproduced based on your initial post, but noticed that when I
> > cut it down the problem went away.
> 
> Oh, I had to look further down than I did initially. Now I can reproduce it
> from the initial data as well.
> 
> Note that it goes away with --minimal.

That's interesting. I did wonder if this was in fact a bug, or simply
that Myers does not promise to find the absolute minimal diff. I'm
_still_ not sure, especially because the minimization is so obvious in
this case (literally the first "-" and the first "+" line of a
contiguous hunk are identical).

> I have a patch cooking (which was sent out as
> https://public-inbox.org/git/20180810221857.87399-1-sbeller@google.com/)
> 
> and one of the weaknesses in that patch is the lack of explanation on
> when the heuristic is applied as I have not fully understood it yet.

I'm not sure I understand it either. But at least knowing that --minimal
changes the output gives a lead for investigation (I don't really have
time to dig into it in the next few days, though).

-Peff

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-30 19:20         ` Jeff King
@ 2018-08-30 19:28           ` Stefan Beller
  2018-08-31 21:38             ` Johannes Schindelin
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Beller @ 2018-08-30 19:28 UTC (permalink / raw)
  To: Jeff King; +Cc: Gabriel Holodak, git

On Thu, Aug 30, 2018 at 12:20 PM Jeff King <peff@peff.net> wrote:
>
> On Thu, Aug 30, 2018 at 12:16:22PM -0700, Stefan Beller wrote:
>
> > On Wed, Aug 29, 2018 at 7:54 PM Jeff King <peff@peff.net> wrote:
> > >
> > > On Wed, Aug 29, 2018 at 10:10:25PM -0400, Gabriel Holodak wrote:
> > >
> > > > > Could you cut down to a real minimal reproduction, i.e. just these 20
> > > > > lines or so?
> > > >
> > > > I'm working on getting down to a minimal reproduction, a few lines at
> > > > a time. One thing that seems strange: as I've removed lines, there are
> > > > a bunch of lines that don't matter. Then I'll find some lines that, if
> > > > removed, completely fix the issue. But the ordering for these
> > > > apparently important lines doesn't matter. They just have to be
> > > > somewhere in the file to cause the duplicated diffs.
> > > >
> > > > I'll upload again when I've figured out all the unimportant lines to remove.
> > >
> > > Yeah, I reproduced based on your initial post, but noticed that when I
> > > cut it down the problem went away.
> >
> > Oh, I had to look further down than I did initially. Now I can reproduce it
> > from the initial data as well.
> >
> > Note that it goes away with --minimal.
>
> That's interesting. I did wonder if this was in fact a bug, or simply
> that Myers does not promise to find the absolute minimal diff. I'm
> _still_ not sure, especially because the minimization is so obvious in
> this case (literally the first "-" and the first "+" line of a
> contiguous hunk are identical).

The `Myers` (our default) diff algorithm is really the Myers algorithm +
a heuristic that cuts off the long tail when it is very costly to compute
the minimal diff.

The `minimal` diff is the true Myers algorithm and I'd vouch for its
correctness and being the minimal number of lines in the diff output.

The Myers is implemented before
https://github.com/git/git/blob/master/xdiff/xdiffi.c#L135
and the heuristics is after that line.

> > I have a patch cooking (which was sent out as
> > https://public-inbox.org/git/20180810221857.87399-1-sbeller@google.com/)
> >
> > and one of the weaknesses in that patch is the lack of explanation on
> > when the heuristic is applied as I have not fully understood it yet.
>
> I'm not sure I understand it either. But at least knowing that --minimal
> changes the output gives a lead for investigation (I don't really have
> time to dig into it in the next few days, though).

An interesting (to me) approach for digging into that would include
finding these examples at scale, which I presented in
https://public-inbox.org/git/20180810001010.58870-1-sbeller@google.com/
but I guess reading the code would work just as fine.

Thanks,
Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-30 19:28           ` Stefan Beller
@ 2018-08-31 21:38             ` Johannes Schindelin
  2018-09-01 15:23               ` Stefan Beller
  0 siblings, 1 reply; 9+ messages in thread
From: Johannes Schindelin @ 2018-08-31 21:38 UTC (permalink / raw)
  To: Stefan Beller; +Cc: Jeff King, Gabriel Holodak, git

Hi,

On Thu, 30 Aug 2018, Stefan Beller wrote:

> On Thu, Aug 30, 2018 at 12:20 PM Jeff King <peff@peff.net> wrote:
> >
> > [...] Myers does not promise to find the absolute minimal diff. [...]
> 
> The `Myers` (our default) diff algorithm is really the Myers algorithm +
> a heuristic that cuts off the long tail when it is very costly to compute
> the minimal diff.

IIRC Myers promises minimal diffs only for -U0. As soon as you add
context, Myers might in fact end up with a suboptimal diff, even without
that heuristic.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Possible bug: identical lines added/removed in git diff
  2018-08-31 21:38             ` Johannes Schindelin
@ 2018-09-01 15:23               ` Stefan Beller
  0 siblings, 0 replies; 9+ messages in thread
From: Stefan Beller @ 2018-09-01 15:23 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Jeff King, gthepiper, git

On Fri, Aug 31, 2018 at 2:39 PM Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
>
> Hi,
>
> On Thu, 30 Aug 2018, Stefan Beller wrote:
>
> > On Thu, Aug 30, 2018 at 12:20 PM Jeff King <peff@peff.net> wrote:
> > >
> > > [...] Myers does not promise to find the absolute minimal diff. [...]
> >
> > The `Myers` (our default) diff algorithm is really the Myers algorithm +
> > a heuristic that cuts off the long tail when it is very costly to compute
> > the minimal diff.
>
> IIRC Myers

(the original, which we spell `minimal`)

> promises minimal diffs only for -U0. As soon as you add
> context, Myers might in fact end up with a suboptimal diff, even without
> that heuristic.

ah, the last 4 words made it clear.

I have debated the cost function for diffs some time ago and
came to the conclusion that having one line added/removed costing
a flat price of 1 in the search of the 'lowest cost diff' is pretty good
as it does an ok job in the broad world, it is not 'overfitting' assumptions
on a problem.

For example in some patches I pay more attention to the lines
removed than to the lines added, or vice versa, so assigning
different costs to added/removed lines would make sense.
(It depend on the type of patch, but that cannot be deduced
at the low level of diff machinery)

Starting a new hunk (i.e. add cost to -U<n> for n >0) could be
costly. In fact we have an after-Myers optimization in the xdiff
code that checks if hunks can be coalesced together, but
if we could have that cost at diff computation time, this might
make for better diffs already.

Another example is number of changes between
added/removed/context parts. If I have to review only
one large added part and one large removed part, it may
be more understandable than having interleaved adds/removes.
(I think --patience goes in that direction, but does optimize for
a different metric)

Stefan

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-09-01 15:23 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-27  1:54 Possible bug: identical lines added/removed in git diff Gabriel Holodak
2018-08-27 17:47 ` Stefan Beller
2018-08-30  2:10   ` Gabriel Holodak
2018-08-30  2:54     ` Jeff King
2018-08-30 19:16       ` Stefan Beller
2018-08-30 19:20         ` Jeff King
2018-08-30 19:28           ` Stefan Beller
2018-08-31 21:38             ` Johannes Schindelin
2018-09-01 15:23               ` Stefan Beller

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).