diff options
author | Rasmus Andersson <rasmus@notion.se> | 2018-09-03 22:55:49 +0300 |
---|---|---|
committer | Rasmus Andersson <rasmus@notion.se> | 2018-09-03 22:55:49 +0300 |
commit | c833e252c925e8dd68108660710ca835d95daa6f (patch) | |
tree | 6b2e28264ed45efd7f054e453b622098d0d875b8 /misc/unicode_util.py | |
parent | 8c1a4c181ef12000179dfec541f1af87e9b03122 (diff) | |
download | inter-c833e252c925e8dd68108660710ca835d95daa6f.tar.xz |
Major overhaul, moving from UFO2 to Glyphs and UFO3, plus a brand new and much simpler fontbuild
Diffstat (limited to 'misc/unicode_util.py')
-rw-r--r-- | misc/unicode_util.py | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/misc/unicode_util.py b/misc/unicode_util.py deleted file mode 100644 index 18196e87e..000000000 --- a/misc/unicode_util.py +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env python -# encoding: utf8 - -class MainCategories: - Letter = 'Letter' - Mark = 'Mark' - Number = 'Number' - Punctuation = 'Punctuation' - Symbol = 'Symbol' - Separator = 'Separator' - Control = 'Control' - Format = 'Format' - Surrogate = 'Surrogate' - PrivateUse = 'Private_Use' - Unassigned = 'Unassigned' - Other = 'Other' - -GeneralCategories = { - 'Lu': ('Uppercase_Letter', MainCategories.Letter), - 'Ll': ('Lowercase_Letter', MainCategories.Letter), - 'Lt': ('Titlecase_Letter', MainCategories.Letter), - 'LC': ('Cased_Letter', MainCategories.Letter), - 'Lm': ('Modifier_Letter', MainCategories.Letter), - 'Lo': ('Other_Letter', MainCategories.Letter), - 'L': ('Letter', MainCategories.Letter), - 'Mn': ('Nonspacing_Mark', MainCategories.Mark), - 'Mc': ('Spacing_Mark', MainCategories.Mark), - 'Me': ('Enclosing_Mark', MainCategories.Mark), - 'M': ('Mark', MainCategories.Mark), - 'Nd': ('Decimal_Number', MainCategories.Number), - 'Nl': ('Letter_Number', MainCategories.Number), - 'No': ('Other_Number', MainCategories.Number), - 'N': ('Number', MainCategories.Number), - 'Pc': ('Connector_Punctuation', MainCategories.Punctuation), - 'Pd': ('Dash_Punctuation', MainCategories.Punctuation), - 'Ps': ('Open_Punctuation', MainCategories.Punctuation), - 'Pe': ('Close_Punctuation', MainCategories.Punctuation), - 'Pi': ('Initial_Punctuation', MainCategories.Punctuation), - 'Pf': ('Final_Punctuation', MainCategories.Punctuation), - 'Po': ('Other_Punctuation', MainCategories.Punctuation), - 'P': ('Punctuation', MainCategories.Punctuation), - 'Sm': ('Math_Symbol', MainCategories.Symbol), - 'Sc': ('Currency_Symbol', MainCategories.Symbol), - 'Sk': ('Modifier_Symbol', MainCategories.Symbol), - 'So': ('Other_Symbol', MainCategories.Symbol), - 'S': ('Symbol', MainCategories.Symbol), - 'Zs': ('Space_Separator', MainCategories.Separator), - 'Zl': ('Line_Separator', MainCategories.Separator), - 'Zp': ('Paragraph_Separator', MainCategories.Separator), - 'Z': ('Separator', MainCategories.Separator), - 'Cc': ('Control', MainCategories.Control), - 'Cf': ('Format', MainCategories.Format), - 'Cs': ('Surrogate', MainCategories.Surrogate), - 'Co': ('Private_Use', MainCategories.PrivateUse), - 'Cn': ('Unassigned', MainCategories.Unassigned), - 'C': ('Other', MainCategories.Other), -} - - -class Codepoint: - def __init__(self, v): - self.codePoint = int(v[0], 16) - self.name = v[1] - - self.category = v[2] - c = GeneralCategories.get(self.category, ('', MainCategories.Other)) - self.categoryName = c[0] - self.mainCategory = c[1] - - self.decDigitValue = v[6] - self.numValue = v[8] - - def isLetter(self): return self.mainCategory is MainCategories.Letter - def isMark(self): return self.mainCategory is MainCategories.Mark - def isNumber(self): return self.mainCategory is MainCategories.Number - def isPunctuation(self): return self.mainCategory is MainCategories.Punctuation - def isSymbol(self): return self.mainCategory is MainCategories.Symbol - def isSeparator(self): return self.mainCategory is MainCategories.Separator - def isControl(self): return self.mainCategory is MainCategories.Control - def isFormat(self): return self.mainCategory is MainCategories.Format - def isSurrogate(self): return self.mainCategory is MainCategories.Surrogate - def isPrivateUse(self): return self.mainCategory is MainCategories.PrivateUse - def isUnassigned(self): return self.mainCategory is MainCategories.Unassigned - def isOther(self): return self.mainCategory is MainCategories.Other - - -# http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt -def parseUnicodeDataFile(ucdFile): # { codepoint:int => Codepoint() } - ucd = {} - with open(ucdFile, 'r') as f: - for line in f: - # See http://unicode.org/reports/tr44/#UnicodeData.txt for fields - # e.g. "001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;" - if len(line) == 0 or line.startswith('#'): - continue - v = line.split(';') - if len(v) < 10: - continue - try: - cp = Codepoint(v) - ucd[cp.codePoint] = cp - except: - pass - return ucd |