diff --git a/ofdgo_font_cff.go b/ofdgo_font_cff.go index 3b7dd77..2dfcd20 100644 --- a/ofdgo_font_cff.go +++ b/ofdgo_font_cff.go @@ -1663,9 +1663,6 @@ func adobeGB1CIDToUnicode(cid int) (rune, bool) { // 返回: rune Unicode字符 func getUnicodeFromName(name string) rune { name, _, _ = strings.Cut(name, ".") - if character := cffStandardNameUnicode[name]; character != 0 { - return character - } digits := "" if strings.HasPrefix(name, "uni") && len(name) == 7 { digits = name[3:] @@ -1678,5 +1675,96 @@ func getUnicodeFromName(name string) rune { 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 } diff --git a/ofdgo_font_cff_names.go b/ofdgo_font_cff_names.go index 61a7254..af17850 100644 --- a/ofdgo_font_cff_names.go +++ b/ofdgo_font_cff_names.go @@ -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 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 -}()