From afd2490a6cacbb81b4ae43b32ed6edadecf7da6e Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Wed, 22 Nov 2017 16:57:14 +0100 Subject: [PATCH] [unicodedata] add script_name function Converts four-letter script codes to human-readable long names --- Lib/fontTools/unicodedata/__init__.py | 9 +++++++++ Tests/unicodedata_test.py | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/Lib/fontTools/unicodedata/__init__.py b/Lib/fontTools/unicodedata/__init__.py index 7428b5416..e05edc20a 100644 --- a/Lib/fontTools/unicodedata/__init__.py +++ b/Lib/fontTools/unicodedata/__init__.py @@ -84,6 +84,15 @@ def script_extension(char): return value +def script_name(code): + """ Return the long, human-readable script name given a four-letter + Unicode script code. + + Raises KeyError if no matching name is found. + """ + return Scripts.NAMES[code].replace("_", " ") + + def block(char): """ Return the block property assigned to the Unicode character 'char' as a string. diff --git a/Tests/unicodedata_test.py b/Tests/unicodedata_test.py index ba9a3c448..677de5676 100644 --- a/Tests/unicodedata_test.py +++ b/Tests/unicodedata_test.py @@ -4,6 +4,8 @@ from fontTools.misc.py23 import * from fontTools import unicodedata +import pytest + def test_script(): assert unicodedata.script("a") == "Latn" @@ -167,8 +169,23 @@ def test_script_extension(): 'Orya', 'Sind', 'Sinh', 'Sylo', 'Takr', 'Taml', 'Telu', 'Tirh'} +def test_script_name(): + assert unicodedata.script_name("Latn") == "Latin" + assert unicodedata.script_name("Zyyy") == "Common" + assert unicodedata.script_name("Zzzz") == "Unknown" + # underscores in long names are replaced by spaces + assert unicodedata.script_name("Egyp") == "Egyptian Hieroglyphs" + with pytest.raises(KeyError): + unicodedata.script_name("QQQQ") + + def test_block(): assert unicodedata.block("\x00") == "Basic Latin" assert unicodedata.block("\x7F") == "Basic Latin" assert unicodedata.block("\x80") == "Latin-1 Supplement" assert unicodedata.block("\u1c90") == "No_Block" + + +if __name__ == "__main__": + import sys + sys.exit(pytest.main(sys.argv))