font/sfnt: use ../testdata/cmapTest.ttf.
The index numbers can be verified by running ttx over the ttf file: <GlyphOrder> <!-- The 'id' attribute is only for humans; it is ignored when parsed. --> <GlyphID id="0" name=".notdef"/> <GlyphID id="1" name=".null"/> <GlyphID id="2" name="nonmarkingreturn"/> <GlyphID id="3" name="zero"/> <GlyphID id="4" name="one"/> <GlyphID id="5" name="two"/> <GlyphID id="6" name="A"/> <GlyphID id="7" name="B"/> <GlyphID id="8" name="a"/> <GlyphID id="9" name="ydieresis"/> <GlyphID id="10" name="Amacron"/> <GlyphID id="11" name="amacron"/> <GlyphID id="12" name="uni4E2D"/> <GlyphID id="13" name="u1F0A1"/> <GlyphID id="14" name="u1F0B1"/> <GlyphID id="15" name="u1F0B2"/> </GlyphOrder> Change-Id: I8c3b3f09ca25c14d92725d121481287cf57d0d01 Reviewed-on: https://go-review.googlesource.com/36080 Reviewed-by: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
parent
69afd001f7
commit
55ae12acc9
|
@ -19,6 +19,9 @@ const (
|
||||||
|
|
||||||
psidUnicode2BMPOnly = 3
|
psidUnicode2BMPOnly = 3
|
||||||
psidUnicode2FullRepertoire = 4
|
psidUnicode2FullRepertoire = 4
|
||||||
|
// Note that FontForge may generate a bogus Platform Specific ID (value 10)
|
||||||
|
// for the Unicode Platform ID (value 0). See
|
||||||
|
// https://github.com/fontforge/fontforge/issues/2728
|
||||||
|
|
||||||
psidMacintoshRoman = 0
|
psidMacintoshRoman = 0
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,7 @@ func testTrueType(t *testing.T, f *Font) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGlyphIndex(t *testing.T) {
|
func TestGlyphIndex(t *testing.T) {
|
||||||
data, err := ioutil.ReadFile(filepath.FromSlash("../testdata/CFFTest.otf"))
|
data, err := ioutil.ReadFile(filepath.FromSlash("../testdata/cmapTest.ttf"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -120,27 +120,64 @@ func testGlyphIndex(t *testing.T, data []byte, cmapFormat int) {
|
||||||
r rune
|
r rune
|
||||||
want GlyphIndex
|
want GlyphIndex
|
||||||
}{
|
}{
|
||||||
{'0', 1},
|
// Glyphs that aren't present in cmapTest.ttf.
|
||||||
{'1', 2},
|
|
||||||
{'Q', 3},
|
|
||||||
// TODO: add the U+00E0 non-ASCII Latin-1 Supplement rune to
|
|
||||||
// CFFTest.otf and change 0 to something non-zero.
|
|
||||||
{'\u00e0', 0},
|
|
||||||
{'\u4e2d', 4},
|
|
||||||
// TODO: add a rune >= U+00010000 to CFFTest.otf?
|
|
||||||
|
|
||||||
// Glyphs that aren't present in CFFTest.otf.
|
|
||||||
{'?', 0},
|
{'?', 0},
|
||||||
{'\ufffd', 0},
|
{'\ufffd', 0},
|
||||||
{'\U0001f4a9', 0},
|
{'\U0001f4a9', 0},
|
||||||
|
|
||||||
|
// For a .TTF file, FontForge maps:
|
||||||
|
// - ".notdef" to glyph index 0.
|
||||||
|
// - ".null" to glyph index 1.
|
||||||
|
// - "nonmarkingreturn" to glyph index 2.
|
||||||
|
|
||||||
|
{'/', 0},
|
||||||
|
{'0', 3},
|
||||||
|
{'1', 4},
|
||||||
|
{'2', 5},
|
||||||
|
{'3', 0},
|
||||||
|
|
||||||
|
{'@', 0},
|
||||||
|
{'A', 6},
|
||||||
|
{'B', 7},
|
||||||
|
{'C', 0},
|
||||||
|
|
||||||
|
{'`', 0},
|
||||||
|
{'a', 8},
|
||||||
|
{'b', 0},
|
||||||
|
|
||||||
|
// Of the remaining runes, only U+00FF LATIN SMALL LETTER Y WITH
|
||||||
|
// DIAERESIS is in both the Mac Roman encoding and the cmapTest.ttf
|
||||||
|
// font file.
|
||||||
|
{'\u00fe', 0},
|
||||||
|
{'\u00ff', 9},
|
||||||
|
{'\u0100', 10},
|
||||||
|
{'\u0101', 11},
|
||||||
|
{'\u0102', 0},
|
||||||
|
|
||||||
|
{'\u4e2c', 0},
|
||||||
|
{'\u4e2d', 12},
|
||||||
|
{'\u4e2e', 0},
|
||||||
|
|
||||||
|
/*
|
||||||
|
TODO: support runes above U+FFFF, i.e. cmap format 12.
|
||||||
|
|
||||||
|
{'\U0001f0a0', 0},
|
||||||
|
{'\U0001f0a1', 13},
|
||||||
|
{'\U0001f0a2', 0},
|
||||||
|
|
||||||
|
{'\U0001f0b0', 0},
|
||||||
|
{'\U0001f0b1', 14},
|
||||||
|
{'\U0001f0b2', 15},
|
||||||
|
{'\U0001f0b3', 0},
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
var b Buffer
|
var b Buffer
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
want := tc.want
|
want := tc.want
|
||||||
// cmap format 0, with the Macintosh Roman encoding, can't represent
|
// cmap format 0, with the Macintosh Roman encoding, can only represent
|
||||||
// U+4E2D.
|
// a limited set of non-ASCII runes, e.g. U+00FF.
|
||||||
if cmapFormat == 0 && tc.r == '\u4e2d' {
|
if cmapFormat == 0 && tc.r > '\u007f' && tc.r != '\u00ff' {
|
||||||
want = 0
|
want = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
265
font/testdata/cmapTest.sfd
vendored
Normal file
265
font/testdata/cmapTest.sfd
vendored
Normal file
|
@ -0,0 +1,265 @@
|
||||||
|
SplineFontDB: 3.0
|
||||||
|
FontName: cmapTest
|
||||||
|
FullName: cmapTest
|
||||||
|
FamilyName: cmapTest
|
||||||
|
Weight: Regular
|
||||||
|
Copyright: Copyright 2016 The Go Authors. All rights reserved.\nUse of this font is governed by a BSD-style license that can be found at https://golang.org/LICENSE.
|
||||||
|
Version: 001.000
|
||||||
|
ItalicAngle: -11.25
|
||||||
|
UnderlinePosition: -204
|
||||||
|
UnderlineWidth: 102
|
||||||
|
Ascent: 1638
|
||||||
|
Descent: 410
|
||||||
|
LayerCount: 2
|
||||||
|
Layer: 0 1 "Back" 1
|
||||||
|
Layer: 1 1 "Fore" 0
|
||||||
|
XUID: [1021 367 888937226 7862908]
|
||||||
|
FSType: 8
|
||||||
|
OS2Version: 0
|
||||||
|
OS2_WeightWidthSlopeOnly: 0
|
||||||
|
OS2_UseTypoMetrics: 1
|
||||||
|
CreationTime: 1484386143
|
||||||
|
ModificationTime: 1486021330
|
||||||
|
PfmFamily: 17
|
||||||
|
TTFWeight: 400
|
||||||
|
TTFWidth: 5
|
||||||
|
LineGap: 184
|
||||||
|
VLineGap: 0
|
||||||
|
OS2TypoAscent: 0
|
||||||
|
OS2TypoAOffset: 1
|
||||||
|
OS2TypoDescent: 0
|
||||||
|
OS2TypoDOffset: 1
|
||||||
|
OS2TypoLinegap: 184
|
||||||
|
OS2WinAscent: 0
|
||||||
|
OS2WinAOffset: 1
|
||||||
|
OS2WinDescent: 0
|
||||||
|
OS2WinDOffset: 1
|
||||||
|
HheadAscent: 0
|
||||||
|
HheadAOffset: 1
|
||||||
|
HheadDescent: 0
|
||||||
|
HheadDOffset: 1
|
||||||
|
OS2Vendor: 'PfEd'
|
||||||
|
MarkAttachClasses: 1
|
||||||
|
DEI: 91125
|
||||||
|
LangName: 1033
|
||||||
|
Encoding: UnicodeFull
|
||||||
|
UnicodeInterp: none
|
||||||
|
NameList: Adobe Glyph List
|
||||||
|
DisplaySize: -24
|
||||||
|
AntiAlias: 1
|
||||||
|
FitToEm: 1
|
||||||
|
WinInfo: 126976 32 23
|
||||||
|
BeginPrivate: 0
|
||||||
|
EndPrivate
|
||||||
|
TeXData: 1 0 0 346030 173015 115343 0 -1048576 115343 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144
|
||||||
|
BeginChars: 1114112 13
|
||||||
|
|
||||||
|
StartChar: zero
|
||||||
|
Encoding: 48 48 0
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: one
|
||||||
|
Encoding: 49 49 1
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: two
|
||||||
|
Encoding: 50 50 2
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: A
|
||||||
|
Encoding: 65 65 3
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: uni4E2D
|
||||||
|
Encoding: 20013 20013 4
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: u1F0A1
|
||||||
|
Encoding: 127137 127137 5
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: ydieresis
|
||||||
|
Encoding: 255 255 6
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: Amacron
|
||||||
|
Encoding: 256 256 7
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: amacron
|
||||||
|
Encoding: 257 257 8
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: B
|
||||||
|
Encoding: 66 66 9
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: a
|
||||||
|
Encoding: 97 97 10
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: u1F0B1
|
||||||
|
Encoding: 127153 127153 11
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
|
||||||
|
StartChar: u1F0B2
|
||||||
|
Encoding: 127154 127154 12
|
||||||
|
Width: 800
|
||||||
|
VWidth: 0
|
||||||
|
Flags: W
|
||||||
|
LayerCount: 2
|
||||||
|
Fore
|
||||||
|
SplineSet
|
||||||
|
0 0 m 29,0,-1
|
||||||
|
400 800 l 25,1,-1
|
||||||
|
800 0 l 25,2,-1
|
||||||
|
0 0 l 29,0,-1
|
||||||
|
EndSplineSet
|
||||||
|
Validated: 1
|
||||||
|
EndChar
|
||||||
|
EndChars
|
||||||
|
EndSplineFont
|
BIN
font/testdata/cmapTest.ttf
vendored
Normal file
BIN
font/testdata/cmapTest.ttf
vendored
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user