feat(字体处理): 移除外部字形派生映射
build.yaml / build (push) Successful in 43s

This commit is contained in:
xiaoqidun committed 2026-10-02 15:07:55 +08:00
1 parent 3933afd123
commit 90901fb9e9
2 files changed
+91 -52

No files matched your search

+91 -3
View File
@@ -1663,9 +1663,6 @@ func adobeGB1CIDToUnicode(cid int) (rune, bool) {
// 返回: rune Unicode字符 // 返回: rune Unicode字符
func getUnicodeFromName(name string) rune { func getUnicodeFromName(name string) rune {
name, _, _ = strings.Cut(name, ".") name, _, _ = strings.Cut(name, ".")
if character := cffStandardNameUnicode[name]; character != 0 {
return character
}
digits := "" digits := ""
if strings.HasPrefix(name, "uni") && len(name) == 7 { if strings.HasPrefix(name, "uni") && len(name) == 7 {
digits = name[3:] digits = name[3:]
@@ -1678,5 +1675,96 @@ func getUnicodeFromName(name string) rune {
return rune(value) return rune(value)
} }
} }
switch name {
case "space":
return ' '
case "exclam":
return '!'
case "quotedbl":
return '"'
case "numbersign":
return '#'
case "dollar":
return '$'
case "percent":
return '%'
case "ampersand":
return '&'
case "quotesingle":
return '\''
case "parenleft":
return '('
case "parenright":
return ')'
case "asterisk":
return '*'
case "plus":
return '+'
case "comma":
return ','
case "hyphen":
return '-'
case "period":
return '.'
case "slash":
return '/'
case "zero":
return '0'
case "one":
return '1'
case "two":
return '2'
case "three":
return '3'
case "four":
return '4'
case "five":
return '5'
case "six":
return '6'
case "seven":
return '7'
case "eight":
return '8'
case "nine":
return '9'
case "colon":
return ':'
case "semicolon":
return ';'
case "less":
return '<'
case "equal":
return '='
case "greater":
return '>'
case "question":
return '?'
case "at":
return '@'
case "bracketleft":
return '['
case "backslash":
return '\\'
case "bracketright":
return ']'
case "asciicircum":
return '^'
case "underscore":
return '_'
case "grave":
return '`'
case "braceleft":
return '{'
case "bar":
return '|'
case "braceright":
return '}'
case "asciitilde":
return '~'
}
if len(name) == 1 {
return rune(name[0])
}
return 0 return 0
} }
-49
View File
@@ -77,52 +77,3 @@ Iacutesmall Icircumflexsmall Idieresissmall Ethsmall Ntildesmall Ogravesmall Oac
Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall 001.000 001.001 001.002 001.003 Black Ugravesmall Uacutesmall Ucircumflexsmall Udieresissmall Yacutesmall Thornsmall Ydieresissmall 001.000 001.001 001.002 001.003 Black
Bold Book Light Medium Regular Roman Semibold Bold Book Light Medium Regular Roman Semibold
`) `)
// cffStandardUnicode 按SID保存标准字形的单字符Unicode映射,不替换实际字形
// https://github.com/adobe-type-tools/agl-aglfn
var cffStandardUnicode = [...]rune{
0x0, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x2019, 0x28, 0x29, 0x2A,
0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42,
0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E,
0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A,
0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x2018, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66,
0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72,
0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
0xA1, 0xA2, 0xA3, 0x2044, 0xA5, 0x192, 0xA7, 0xA4, 0x27, 0x201C, 0xAB, 0x2039,
0x203A, 0xFB01, 0xFB02, 0x2013, 0x2020, 0x2021, 0xB7, 0xB6, 0x2022, 0x201A, 0x201E, 0x201D,
0xBB, 0x2026, 0x2030, 0xBF, 0x60, 0xB4, 0x2C6, 0x2DC, 0xAF, 0x2D8, 0x2D9, 0xA8,
0x2DA, 0xB8, 0x2DD, 0x2DB, 0x2C7, 0x2014, 0xC6, 0xAA, 0x141, 0xD8, 0x152, 0xBA,
0xE6, 0x131, 0x142, 0xF8, 0x153, 0xDF, 0xB9, 0xAC, 0xB5, 0x2122, 0xD0, 0xBD,
0xB1, 0xDE, 0xBC, 0xF7, 0xA6, 0xB0, 0xFE, 0xBE, 0xB2, 0xAE, 0x2212, 0xF0,
0xD7, 0xB3, 0xA9, 0xC1, 0xC2, 0xC4, 0xC0, 0xC5, 0xC3, 0xC7, 0xC9, 0xCA,
0xCB, 0xC8, 0xCD, 0xCE, 0xCF, 0xCC, 0xD1, 0xD3, 0xD4, 0xD6, 0xD2, 0xD5,
0x160, 0xDA, 0xDB, 0xDC, 0xD9, 0xDD, 0x178, 0x17D, 0xE1, 0xE2, 0xE4, 0xE0,
0xE5, 0xE3, 0xE7, 0xE9, 0xEA, 0xEB, 0xE8, 0xED, 0xEE, 0xEF, 0xEC, 0xF1,
0xF3, 0xF4, 0xF6, 0xF2, 0xF5, 0x161, 0xFA, 0xFB, 0xFC, 0xF9, 0xFD, 0xFF,
0x17E, 0xF721, 0xF6F8, 0xF724, 0xF6E4, 0xF726, 0xF7B4, 0x207D, 0x207E, 0x2025, 0x2024, 0xF730,
0xF731, 0xF732, 0xF733, 0xF734, 0xF735, 0xF736, 0xF737, 0xF738, 0xF739, 0xF6E2, 0xF6DE, 0xF6E8,
0xF73F, 0xF6E9, 0xF6EA, 0xF6E0, 0xF6EB, 0xF6EC, 0xF6ED, 0xF6EE, 0xF6EF, 0x207F, 0xF6F0, 0xF6F1,
0xF6F2, 0xF6F3, 0xFB00, 0xFB03, 0xFB04, 0x208D, 0x208E, 0xF6F6, 0xF6E6, 0xF760, 0xF761, 0xF762,
0xF763, 0xF764, 0xF765, 0xF766, 0xF767, 0xF768, 0xF769, 0xF76A, 0xF76B, 0xF76C, 0xF76D, 0xF76E,
0xF76F, 0xF770, 0xF771, 0xF772, 0xF773, 0xF774, 0xF775, 0xF776, 0xF777, 0xF778, 0xF779, 0xF77A,
0x20A1, 0xF6DC, 0xF6DD, 0xF6FE, 0xF7A1, 0xF7A2, 0xF6F9, 0xF6FD, 0xF6FF, 0xF7A8, 0xF6F4, 0xF6F5,
0xF6F7, 0xF7AF, 0x2012, 0xF6E5, 0xF6FB, 0xF6FC, 0xF7B8, 0xF7BF, 0x215B, 0x215C, 0x215D, 0x215E,
0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082,
0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, 0xF6DF, 0xF6E3, 0xF6E7, 0xF6E1, 0xF7E0,
0xF7E1, 0xF7E2, 0xF7E3, 0xF7E4, 0xF7E5, 0xF7E6, 0xF7E7, 0xF7E8, 0xF7E9, 0xF7EA, 0xF7EB, 0xF7EC,
0xF7ED, 0xF7EE, 0xF7EF, 0xF7F0, 0xF7F1, 0xF7F2, 0xF7F3, 0xF7F4, 0xF7F5, 0xF7F6, 0xF6FA, 0xF7F8,
0xF7F9, 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, 0xF7FE, 0xF7FF, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
}
// cffStandardNameUnicode 按需定位CFF标准字形的Unicode字符
var cffStandardNameUnicode = func() map[string]rune {
result := make(map[string]rune, len(cffStandardStrings))
for sid, character := range cffStandardUnicode {
if character != 0 {
result[cffStandardStrings[sid]] = character
}
}
return result
}()