Repository: pdfminer/pdfminer.six (language: python)

Issue:
Autosort imports
At the moment imports are sorted in arbitrary order. By adding a formatter that autosorts imports, the code variability is reduced. 

Also imports are relative, but [pep8](https://peps.python.org/pep-0008/#imports) recommends absolute imports. 

E.g. use ([isort](https://pycqa.github.io/isort/)). 


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml
index 47887ea8..b79604cb 100644
--- a/.github/workflows/actions.yml
+++ b/.github/workflows/actions.yml
@@ -14,27 +14,8 @@ env:
   default-python: "3.10"
 
 jobs:
-
-  check-code-formatting:
-    name: Check coding style
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout code
-        uses: actions/checkout@v4
-      - name: Set up Python ${{ env.default-python }}
-        uses: actions/setup-python@v4
-        with:
-          python-version: ${{ env.default-python }}
-      - name: Upgrade pip, Install nox
-        run: |
-          python -m pip install --upgrade pip
-          python -m pip install nox
-      - name: Check coding style
-        run: |
-          nox --error-on-missing-interpreters --non-interactive --session format
-
   check-coding-style:
-    name: Check coding style
+    name: Format and check coding style
     runs-on: ubuntu-latest
     steps:
       - name: Checkout code
@@ -49,7 +30,7 @@ jobs:
           python -m pip install nox
       - name: Check coding style
         run: |
-          nox --error-on-missing-interpreters --non-interactive --session lint
+          nox --error-on-missing-interpreters --non-interactive --session format
 
   check-static-types:
     name: Check static types
@@ -122,7 +103,6 @@ jobs:
     name: Publish to PyPi
     runs-on: ubuntu-latest
     needs:
-      - check-code-formatting
       - check-coding-style
       - check-static-types
       - tests
diff --git a/.gitignore b/.gitignore
index c1642e11..7f27b7ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,6 +24,5 @@ Pipfile
 Pipfile.lock
 .noseids
 .vscode/
-pyproject.toml
 poetry.lock
 .eggs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7cf168bf..b743c35f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 
 ## [Unreleased]
 
+### Changed
+
+- Using absolute instead of relative imports ([[#995](https://github.com/pdfminer/pdfminer.six/pull/995)])
+
 ### Deprecated
 
 - The third argument (generation number) to `PDFObjRef` ([#972](https://github.com/pdfminer/pdfminer.six/pull/972))
diff --git a/fuzzing/extract_text_fuzzer.py b/fuzzing/extract_text_fuzzer.py
index 219badb5..79fe6018 100644
--- a/fuzzing/extract_text_fuzzer.py
+++ b/fuzzing/extract_text_fuzzer.py
@@ -6,9 +6,9 @@
 
 with atheris.instrument_imports():
     from fuzzing.utils import (
-        prepare_pdfminer_fuzzing,
-        is_valid_byte_stream,
         generate_layout_parameters,
+        is_valid_byte_stream,
+        prepare_pdfminer_fuzzing,
     )
     from pdfminer.high_level import extract_text
 
diff --git a/fuzzing/extract_text_to_fp_fuzzer.py b/fuzzing/extract_text_to_fp_fuzzer.py
index 302062d9..cb1424fb 100644
--- a/fuzzing/extract_text_to_fp_fuzzer.py
+++ b/fuzzing/extract_text_to_fp_fuzzer.py
@@ -7,9 +7,9 @@
 
 with atheris.instrument_imports():
     from fuzzing.utils import (
-        prepare_pdfminer_fuzzing,
-        is_valid_byte_stream,
         generate_layout_parameters,
+        is_valid_byte_stream,
+        prepare_pdfminer_fuzzing,
     )
     from pdfminer.high_level import extract_text_to_fp
     from pdfminer.psexceptions import PSException
diff --git a/fuzzing/fuzzed_data_provider.py b/fuzzing/fuzzed_data_provider.py
index 1992fbab..55889eee 100644
--- a/fuzzing/fuzzed_data_provider.py
+++ b/fuzzing/fuzzed_data_provider.py
@@ -26,7 +26,10 @@ def ConsumeMemoryFile(self, all_data: bool = False) -> io.BytesIO:
             return io.BytesIO(self.ConsumeRandomBytes())
 
     def ConsumeOptionalIntList(
-        self, max_count: int, min: int, max: int
+        self,
+        max_count: int,
+        min: int,
+        max: int,
     ) -> Optional[List[int]]:
         if self.ConsumeBool():
             count = self.ConsumeIntInRange(0, max_count)
diff --git a/fuzzing/page_extraction_fuzzer.py b/fuzzing/page_extraction_fuzzer.py
index 435cdb69..fb91ad05 100755
--- a/fuzzing/page_extraction_fuzzer.py
+++ b/fuzzing/page_extraction_fuzzer.py
@@ -1,14 +1,15 @@
 #!/usr/bin/env python3
-import atheris
 import sys
 
+import atheris
+
 from fuzzing.fuzzed_data_provider import PdfminerFuzzedDataProvider
 
 with atheris.instrument_imports():
     from fuzzing.utils import (
-        prepare_pdfminer_fuzzing,
-        is_valid_byte_stream,
         generate_layout_parameters,
+        is_valid_byte_stream,
+        prepare_pdfminer_fuzzing,
     )
     from pdfminer.high_level import extract_pages
     from pdfminer.psexceptions import PSException
@@ -29,7 +30,7 @@ def fuzz_one_input(data: bytes) -> None:
                     maxpages=fdp.ConsumeIntInRange(0, 10),
                     page_numbers=fdp.ConsumeOptionalIntList(10, 0, 10),
                     laparams=generate_layout_parameters(fdp),
-                )
+                ),
             )
     except (AssertionError, PSException):
         return
diff --git a/fuzzing/utils.py b/fuzzing/utils.py
index 6c8e5a0f..9be29334 100644
--- a/fuzzing/utils.py
+++ b/fuzzing/utils.py
@@ -1,6 +1,5 @@
-"""
-Utilities shared across the various PDF fuzzing harnesses
-"""
+"""Utilities shared across the various PDF fuzzing harnesses"""
+
 import logging
 from typing import Optional
 
@@ -12,9 +11,7 @@
 
 
 def prepare_pdfminer_fuzzing() -> None:
-    """
-    Used to disable logging of the pdfminer module
-    """
+    """Used to disable logging of the pdfminer module"""
     logging.getLogger("pdfminer").setLevel(logging.CRITICAL)
 
 
diff --git a/noxfile.py b/noxfile.py
index 5c9aca14..56b514a4 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -2,25 +2,20 @@
 
 import nox
 
-
 PYTHON_ALL_VERSIONS = ["3.8", "3.9", "3.10", "3.11", "3.12"]
 PYTHON_MODULES = ["fuzzing", "pdfminer", "tools", "tests", "noxfile.py", "setup.py"]
 
 
 @nox.session
 def format(session):
-    session.install("black<23")
+    session.install("ruff==0.5.1")
     # Format files locally with black, but only check in cicd
     if "CI" in os.environ:
-        session.run("black", "--check", *PYTHON_MODULES)
+        session.run("ruff", "check")
+        session.run("ruff", "format", "--check")
     else:
-        session.run("black", *PYTHON_MODULES)
-
-
-@nox.session
-def lint(session):
-    session.install("flake8")
-    session.run("flake8", *PYTHON_MODULES, "--count", "--statistics")
+        session.run("ruff", "check", "--fix")
+        session.run("ruff", "format")
 
 
 @nox.session
@@ -49,8 +44,20 @@ def docs(session):
     session.install("setuptools")
     session.install("-e", ".[docs]")
     session.run(
-        "python", "-m", "sphinx", "-b", "html", "docs/source", "docs/build/html"
+        "python",
+        "-m",
+        "sphinx",
+        "-b",
+        "html",
+        "docs/source",
+        "docs/build/html",
     )
     session.run(
-        "python", "-m", "sphinx", "-b", "doctest", "docs/source", "docs/build/doctest"
+        "python",
+        "-m",
+        "sphinx",
+        "-b",
+        "doctest",
+        "docs/source",
+        "docs/build/doctest",
     )
diff --git a/pdfminer/__init__.py b/pdfminer/__init__.py
index 5bd4d50a..e2a177ce 100644
--- a/pdfminer/__init__.py
+++ b/pdfminer/__init__.py
@@ -1,4 +1,4 @@
-from importlib.metadata import version, PackageNotFoundError
+from importlib.metadata import PackageNotFoundError, version
 
 try:
     __version__ = version("pdfminer.six")
diff --git a/pdfminer/_saslprep.py b/pdfminer/_saslprep.py
index d56ca16b..18e2b733 100644
--- a/pdfminer/_saslprep.py
+++ b/pdfminer/_saslprep.py
@@ -21,10 +21,10 @@
 __all__ = ["saslprep"]
 
 import stringprep
-from typing import Callable, Tuple
 import unicodedata
+from typing import Callable, Tuple
 
-from .pdfexceptions import PDFValueError
+from pdfminer.pdfexceptions import PDFValueError
 
 # RFC4013 section 2.3 prohibited output.
 _PROHIBITED: Tuple[Callable[[str], bool], ...] = (
@@ -66,7 +66,11 @@ def saslprep(data: str, prohibit_unassigned_code_points: bool = True) -> str:
     in_table_c12 = stringprep.in_table_c12
     in_table_b1 = stringprep.in_table_b1
     data = "".join(
-        ["\u0020" if in_table_c12(elt) else elt for elt in data if not in_table_b1(elt)]
+        [
+            "\u0020" if in_table_c12(elt) else elt
+            for elt in data
+            if not in_table_b1(elt)
+        ],
     )
 
     # RFC3454 section 2, step 2 - Normalize
diff --git a/pdfminer/arcfour.py b/pdfminer/arcfour.py
index a767667f..cc78e361 100644
--- a/pdfminer/arcfour.py
+++ b/pdfminer/arcfour.py
@@ -1,10 +1,9 @@
-""" Python implementation of Arcfour encryption algorithm.
+"""Python implementation of Arcfour encryption algorithm.
 See https://en.wikipedia.org/wiki/RC4
 This code is in the public domain.
 
 """
 
-
 from typing import Sequence
 
 
diff --git a/pdfminer/ascii85.py b/pdfminer/ascii85.py
index dbe3d2a2..233bc744 100644
--- a/pdfminer/ascii85.py
+++ b/pdfminer/ascii85.py
@@ -1,4 +1,4 @@
-""" Python implementation of ASCII85/ASCIIHex decoder (Adobe version).
+"""Python implementation of ASCII85/ASCIIHex decoder (Adobe version).
 
 This code is in the public domain.
 
@@ -10,8 +10,7 @@
 
 # ascii85decode(data)
 def ascii85decode(data: bytes) -> bytes:
-    """
-    In ASCII85 encoding, every four bytes are encoded with five ASCII
+    """In ASCII85 encoding, every four bytes are encoded with five ASCII
     letters, using 85 different types of characters (as 256**4 < 85**5).
     When the length of the original bytes is not a multiple of 4, a special
     rule is used for round up.
@@ -24,7 +23,7 @@ def ascii85decode(data: bytes) -> bytes:
     out = b""
     for i in iter(data):
         c = bytes((i,))
-        if b"!" <= c and c <= b"u":
+        if c >= b"!" and c <= b"u":
             n += 1
             b = b * 85 + (ord(c) - 33)
             if n == 5:
@@ -48,8 +47,7 @@ def ascii85decode(data: bytes) -> bytes:
 
 
 def asciihexdecode(data: bytes) -> bytes:
-    """
-    ASCIIHexDecode filter: PDFReference v1.4 section 3.3.1
+    """ASCIIHexDecode filter: PDFReference v1.4 section 3.3.1
     For each pair of ASCII hexadecimal digits (0-9 and A-F or a-f), the
     ASCIIHexDecode filter produces one byte of binary data. All white-space
     characters are ignored. A right angle bracket character (>) indicates
diff --git a/pdfminer/casting.py b/pdfminer/casting.py
index c73dfa6b..a8df21da 100644
--- a/pdfminer/casting.py
+++ b/pdfminer/casting.py
@@ -1,4 +1,4 @@
-from typing import Optional, Any
+from typing import Any, Optional
 
 
 def safe_int(o: Any) -> Optional[int]:
diff --git a/pdfminer/ccitt.py b/pdfminer/ccitt.py
index 9a9ca6f2..d55cd7ef 100644
--- a/pdfminer/ccitt.py
+++ b/pdfminer/ccitt.py
@@ -25,7 +25,7 @@
     cast,
 )
 
-from .pdfexceptions import PDFException, PDFValueError
+from pdfminer.pdfexceptions import PDFException, PDFValueError
 
 
 def get_bytes(data: bytes) -> Iterator[int]:
@@ -53,7 +53,7 @@ def add(cls, root: BitParserState, v: Union[int, str], bits: str) -> None:
         p: BitParserState = root
         b = None
         for i in range(len(bits)):
-            if 0 < i:
+            if i > 0:
                 assert b is not None
                 if p[b] is None:
                     p[b] = [None, None]
@@ -84,7 +84,6 @@ def _parse_bit(self, x: object) -> None:
 
 
 class CCITTG4Parser(BitParser):
-
     MODE = [None, None]
     BitParser.add(MODE, 0, "1")
     BitParser.add(MODE, +1, "011")
@@ -475,9 +474,7 @@ def _do_vertical(self, dx: int) -> None:
             if x1 == 0:
                 if self._color == 1 and self._refline[x1] != self._color:
                     break
-            elif x1 == len(self._refline):
-                break
-            elif (
+            elif x1 == len(self._refline) or (
                 self._refline[x1 - 1] == self._color
                 and self._refline[x1] != self._color
             ):
@@ -501,9 +498,7 @@ def _do_pass(self) -> None:
             if x1 == 0:
                 if self._color == 1 and self._refline[x1] != self._color:
                     break
-            elif x1 == len(self._refline):
-                break
-            elif (
+            elif x1 == len(self._refline) or (
                 self._refline[x1 - 1] == self._color
                 and self._refline[x1] != self._color
             ):
@@ -513,9 +508,7 @@ def _do_pass(self) -> None:
             if x1 == 0:
                 if self._color == 0 and self._refline[x1] == self._color:
                     break
-            elif x1 == len(self._refline):
-                break
-            elif (
+            elif x1 == len(self._refline) or (
                 self._refline[x1 - 1] != self._color
                 and self._refline[x1] == self._color
             ):
@@ -550,7 +543,10 @@ def _do_uncompressed(self, bits: str) -> None:
 
 class CCITTFaxDecoder(CCITTG4Parser):
     def __init__(
-        self, width: int, bytealign: bool = False, reversed: bool = False
+        self,
+        width: int,
+        bytealign: bool = False,
+        reversed: bool = False,
     ) -> None:
         CCITTG4Parser.__init__(self, width, bytealign=bytealign)
         self.reversed = reversed
@@ -563,7 +559,7 @@ def output_line(self, y: int, bits: Sequence[int]) -> None:
         arr = array.array("B", [0] * ((len(bits) + 7) // 8))
         if self.reversed:
             bits = [1 - b for b in bits]
-        for (i, b) in enumerate(bits):
+        for i, b in enumerate(bits):
             if b:
                 arr[i // 8] += (128, 64, 32, 16, 8, 4, 2, 1)[i % 8]
         self._buf += arr.tobytes()
@@ -598,7 +594,7 @@ def __init__(self, width: int, bytealign: bool = False) -> None:
             self.img = pygame.Surface((self.width, 1000))
 
         def output_line(self, y: int, bits: Sequence[int]) -> None:
-            for (x, b) in enumerate(bits):
+            for x, b in enumerate(bits):
                 if b:
                     self.img.set_at((x, y), (255, 255, 255))
                 else:
diff --git a/pdfminer/cmapdb.py b/pdfminer/cmapdb.py
index 3ee5ae92..87d9870e 100644
--- a/pdfminer/cmapdb.py
+++ b/pdfminer/cmapdb.py
@@ -1,4 +1,4 @@
-""" Adobe character mapping (CMap) support.
+"""Adobe character mapping (CMap) support.
 
 CMaps provide the mapping between character codes and Unicode
 code-points to character ids (CIDs).
@@ -25,23 +25,18 @@
     List,
     MutableMapping,
     Optional,
+    Set,
     TextIO,
     Tuple,
     Union,
     cast,
-    Set,
 )
 
+from pdfminer.encodingdb import name2unicode
 from pdfminer.pdfexceptions import PDFException, PDFTypeError
-from .encodingdb import name2unicode
-from .psparser import KWD
 from pdfminer.psexceptions import PSEOF, PSSyntaxError
-from .psparser import PSKeyword
-from .psparser import PSLiteral
-from .psparser import PSStackParser
-from .psparser import literal_name
-from .utils import choplist
-from .utils import nunpack
+from pdfminer.psparser import KWD, PSKeyword, PSLiteral, PSStackParser, literal_name
+from pdfminer.utils import choplist, nunpack
 
 log = logging.getLogger(__name__)
 
@@ -51,7 +46,6 @@ class CMapError(PDFException):
 
 
 class CMapBase:
-
     debug = 0
 
     def __init__(self, **kwargs: object) -> None:
@@ -88,7 +82,7 @@ def use_cmap(self, cmap: CMapBase) -> None:
         assert isinstance(cmap, CMap), str(type(cmap))
 
         def copy(dst: Dict[int, object], src: Dict[int, object]) -> None:
-            for (k, v) in src.items():
+            for k, v in src.items():
                 if isinstance(v, dict):
                     d: Dict[int, object] = {}
                     dst[k] = d
@@ -121,7 +115,7 @@ def dump(
         if code2cid is None:
             code2cid = self.code2cid
             code = ()
-        for (k, v) in sorted(code2cid.items()):
+        for k, v in sorted(code2cid.items()):
             c = code + (k,)
             if isinstance(v, int):
                 out.write("code %r = cid %d\n" % (c, v))
@@ -160,7 +154,7 @@ def get_unichr(self, cid: int) -> str:
         return self.cid2unichr[cid]
 
     def dump(self, out: TextIO = sys.stdout) -> None:
-        for (k, v) in sorted(self.cid2unichr.items()):
+        for k, v in sorted(self.cid2unichr.items()):
             out.write("cid %d = unicode %r\n" % (k, v))
 
 
@@ -174,7 +168,7 @@ def get_unichr(self, cid: int) -> str:
 class FileCMap(CMap):
     def add_code2cid(self, code: str, cid: int) -> None:
         assert isinstance(code, str) and isinstance(cid, int), str(
-            (type(code), type(cid))
+            (type(code), type(cid)),
         )
         d = self.code2cid
         for c in code[:-1]:
@@ -205,7 +199,7 @@ def add_cid2unichr(self, cid: int, code: Union[PSLiteral, bytes, int]) -> None:
             raise PDFTypeError(code)
 
         # A0 = non-breaking space, some weird fonts can have a collision on a cid here.
-        if unichr == "\u00A0" and self.cid2unichr.get(cid) == " ":
+        if unichr == "\u00a0" and self.cid2unichr.get(cid) == " ":
             return
         self.cid2unichr[cid] = unichr
 
@@ -229,7 +223,6 @@ def __init__(self, name: str, module: Any, vertical: bool) -> None:
 
 
 class CMapDB:
-
     _cmap_cache: Dict[str, PyCMap] = {}
     _umap_cache: Dict[str, List[PyUnicodeMap]] = {}
 
@@ -253,8 +246,7 @@ def _load_data(cls, name: str) -> Any:
                     return type(str(name), (), pickle.loads(gzfile.read()))
                 finally:
                     gzfile.close()
-        else:
-            raise CMapDB.CMapNotFound(name)
+        raise CMapDB.CMapNotFound(name)
 
     @classmethod
     def get_cmap(cls, name: str) -> CMapBase:
@@ -364,7 +356,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
 
         if token is self.KEYWORD_ENDCIDRANGE:
             objs = [obj for (__, obj) in self.popall()]
-            for (start_byte, end_byte, cid) in choplist(3, objs):
+            for start_byte, end_byte, cid in choplist(3, objs):
                 if not isinstance(start_byte, bytes):
                     self._warn_once("The start object of begincidrange is not a byte.")
                     continue
@@ -377,7 +369,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
                 if len(start_byte) != len(end_byte):
                     self._warn_once(
                         "The start and end byte of begincidrange have "
-                        "different lengths."
+                        "different lengths.",
                     )
                     continue
                 start_prefix = start_byte[:-4]
@@ -385,7 +377,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
                 if start_prefix != end_prefix:
                     self._warn_once(
                         "The prefix of the start and end byte of "
-                        "begincidrange are not the same."
+                        "begincidrange are not the same.",
                     )
                     continue
                 svar = start_byte[-4:]
@@ -404,7 +396,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
 
         if token is self.KEYWORD_ENDCIDCHAR:
             objs = [obj for (__, obj) in self.popall()]
-            for (cid, code) in choplist(2, objs):
+            for cid, code in choplist(2, objs):
                 if isinstance(code, bytes) and isinstance(cid, int):
                     self.cmap.add_cid2unichr(cid, code)
             return
@@ -415,7 +407,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
 
         if token is self.KEYWORD_ENDBFRANGE:
             objs = [obj for (__, obj) in self.popall()]
-            for (start_byte, end_byte, code) in choplist(3, objs):
+            for start_byte, end_byte, code in choplist(3, objs):
                 if not isinstance(start_byte, bytes):
                     self._warn_once("The start object is not a byte.")
                     continue
@@ -431,7 +423,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
                     if len(code) != end - start + 1:
                         self._warn_once(
                             "The difference between the start and end "
-                            "offsets does not match the code length."
+                            "offsets does not match the code length.",
                         )
                     for cid, unicode_value in zip(range(start, end + 1), code):
                         self.cmap.add_cid2unichr(cid, unicode_value)
@@ -452,7 +444,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
 
         if token is self.KEYWORD_ENDBFCHAR:
             objs = [obj for (__, obj) in self.popall()]
-            for (cid, code) in choplist(2, objs):
+            for cid, code in choplist(2, objs):
                 if isinstance(cid, bytes) and isinstance(code, bytes):
                     self.cmap.add_cid2unichr(nunpack(cid), code)
             return
diff --git a/pdfminer/converter.py b/pdfminer/converter.py
index f310387d..7563c7af 100644
--- a/pdfminer/converter.py
+++ b/pdfminer/converter.py
@@ -15,38 +15,48 @@
     cast,
 )
 
+from pdfminer import utils
+from pdfminer.image import ImageWriter
+from pdfminer.layout import (
+    LAParams,
+    LTAnno,
+    LTChar,
+    LTComponent,
+    LTContainer,
+    LTCurve,
+    LTFigure,
+    LTImage,
+    LTItem,
+    LTLayoutContainer,
+    LTLine,
+    LTPage,
+    LTRect,
+    LTText,
+    LTTextBox,
+    LTTextBoxVertical,
+    LTTextGroup,
+    LTTextLine,
+    TextGroupElement,
+)
 from pdfminer.pdfcolor import PDFColorSpace
-from . import utils
-from .image import ImageWriter
-from .layout import LAParams, LTComponent, TextGroupElement
-from .layout import LTAnno
-from .layout import LTChar
-from .layout import LTContainer
-from .layout import LTCurve
-from .layout import LTFigure
-from .layout import LTImage
-from .layout import LTItem
-from .layout import LTLayoutContainer
-from .layout import LTLine
-from .layout import LTPage
-from .layout import LTRect
-from .layout import LTText
-from .layout import LTTextBox
-from .layout import LTTextBoxVertical
-from .layout import LTTextGroup
-from .layout import LTTextLine
-from .pdfdevice import PDFTextDevice
-from .pdffont import PDFFont
-from .pdffont import PDFUnicodeNotDefined
-from .pdfinterp import PDFGraphicState, PDFResourceManager
-from .pdfpage import PDFPage
-from .pdftypes import PDFStream
-from .pdfexceptions import PDFValueError
-from .utils import AnyIO, Point, Matrix, Rect, PathSegment, make_compat_str
-from .utils import apply_matrix_pt
-from .utils import bbox2str
-from .utils import enc
-from .utils import mult_matrix
+from pdfminer.pdfdevice import PDFTextDevice
+from pdfminer.pdfexceptions import PDFValueError
+from pdfminer.pdffont import PDFFont, PDFUnicodeNotDefined
+from pdfminer.pdfinterp import PDFGraphicState, PDFResourceManager
+from pdfminer.pdfpage import PDFPage
+from pdfminer.pdftypes import PDFStream
+from pdfminer.utils import (
+    AnyIO,
+    Matrix,
+    PathSegment,
+    Point,
+    Rect,
+    apply_matrix_pt,
+    bbox2str,
+    enc,
+    make_compat_str,
+    mult_matrix,
+)
 
 log = logging.getLogger(__name__)
 
@@ -305,9 +315,7 @@ def _is_binary_stream(outfp: AnyIO) -> bool:
             return False
         elif isinstance(outfp, io.BytesIO):
             return True
-        elif isinstance(outfp, io.StringIO):
-            return False
-        elif isinstance(outfp, io.TextIOBase):
+        elif isinstance(outfp, io.StringIO) or isinstance(outfp, io.TextIOBase):
             return False
 
         return True
@@ -404,7 +412,12 @@ def __init__(
         text_colors: Optional[Dict[str, str]] = None,
     ) -> None:
         PDFConverter.__init__(
-            self, rsrcmgr, outfp, codec=codec, pageno=pageno, laparams=laparams
+            self,
+            rsrcmgr,
+            outfp,
+            codec=codec,
+            pageno=pageno,
+            laparams=laparams,
         )
 
         # write() assumes a codec for binary I/O, or no codec for text I/O.
@@ -455,7 +468,7 @@ def write_header(self) -> None:
     def write_footer(self) -> None:
         page_links = [f'<a href="#{i}">{i}</a>' for i in range(1, self.pageno)]
         s = '<div style="position:absolute; top:0px;">Page: %s</div>\n' % ", ".join(
-            page_links
+            page_links,
         )
         self.write(s)
         self.write("</body></html>\n")
@@ -464,7 +477,13 @@ def write_text(self, text: str) -> None:
         self.write(enc(text))
 
     def place_rect(
-        self, color: str, borderwidth: int, x: float, y: float, w: float, h: float
+        self,
+        color: str,
+        borderwidth: int,
+        x: float,
+        y: float,
+        w: float,
+        h: float,
     ) -> None:
         color2 = self.rect_colors.get(color)
         if color2 is not None:
@@ -486,7 +505,13 @@ def place_border(self, color: str, borderwidth: int, item: LTComponent) -> None:
         self.place_rect(color, borderwidth, item.x0, item.y1, item.width, item.height)
 
     def place_image(
-        self, item: LTImage, borderwidth: int, x: float, y: float, w: float, h: float
+        self,
+        item: LTImage,
+        borderwidth: int,
+        x: float,
+        y: float,
+        w: float,
+        h: float,
     ) -> None:
         if self.imagewriter is not None:
             name = self.imagewriter.export_image(item)
@@ -505,7 +530,12 @@ def place_image(
             self.write(s)
 
     def place_text(
-        self, color: str, text: str, x: float, y: float, size: float
+        self,
+        color: str,
+        text: str,
+        x: float,
+        y: float,
+        size: float,
     ) -> None:
         color2 = self.text_colors.get(color)
         if color2 is not None:
@@ -566,7 +596,7 @@ def put_text(self, text: str, fontname: str, fontsize: float) -> None:
             fontname_without_subset_tag = fontname.split("+")[-1]
             self.write(
                 '<span style="font-family: %s; font-size:%dpx">'
-                % (fontname_without_subset_tag, fontsize * self.scale * self.fontscale)
+                % (fontname_without_subset_tag, fontsize * self.scale * self.fontscale),
             )
             self._font = font
         self.write_text(text)
@@ -589,12 +619,10 @@ def render(item: LTItem) -> None:
                 if self.showpageno:
                     self.write(
                         '<div style="position:absolute; top:%dpx;">'
-                        % ((self._yoffset - item.y1) * self.scale)
+                        % ((self._yoffset - item.y1) * self.scale),
                     )
                     self.write(
-                        '<a name="{}">Page {}</a></div>\n'.format(
-                            item.pageid, item.pageid
-                        )
+                        f'<a name="{item.pageid}">Page {item.pageid}</a></div>\n',
                     )
                 for child in item:
                     render(child)
@@ -610,48 +638,54 @@ def render(item: LTItem) -> None:
                 self.end_div("figure")
             elif isinstance(item, LTImage):
                 self.place_image(item, 1, item.x0, item.y1, item.width, item.height)
-            else:
-                if self.layoutmode == "exact":
-                    if isinstance(item, LTTextLine):
-                        self.place_border("textline", 1, item)
-                        for child in item:
-                            render(child)
-                    elif isinstance(item, LTTextBox):
-                        self.place_border("textbox", 1, item)
-                        self.place_text(
-                            "textbox", str(item.index + 1), item.x0, item.y1, 20
-                        )
-                        for child in item:
-                            render(child)
-                    elif isinstance(item, LTChar):
-                        self.place_border("char", 1, item)
-                        self.place_text(
-                            "char", item.get_text(), item.x0, item.y1, item.size
-                        )
-                else:
-                    if isinstance(item, LTTextLine):
-                        for child in item:
-                            render(child)
-                        if self.layoutmode != "loose":
-                            self.put_newline()
-                    elif isinstance(item, LTTextBox):
-                        self.begin_div(
-                            "textbox",
-                            1,
-                            item.x0,
-                            item.y1,
-                            item.width,
-                            item.height,
-                            item.get_writing_mode(),
-                        )
-                        for child in item:
-                            render(child)
-                        self.end_div("textbox")
-                    elif isinstance(item, LTChar):
-                        fontname = make_compat_str(item.fontname)
-                        self.put_text(item.get_text(), fontname, item.size)
-                    elif isinstance(item, LTText):
-                        self.write_text(item.get_text())
+            elif self.layoutmode == "exact":
+                if isinstance(item, LTTextLine):
+                    self.place_border("textline", 1, item)
+                    for child in item:
+                        render(child)
+                elif isinstance(item, LTTextBox):
+                    self.place_border("textbox", 1, item)
+                    self.place_text(
+                        "textbox",
+                        str(item.index + 1),
+                        item.x0,
+                        item.y1,
+                        20,
+                    )
+                    for child in item:
+                        render(child)
+                elif isinstance(item, LTChar):
+                    self.place_border("char", 1, item)
+                    self.place_text(
+                        "char",
+                        item.get_text(),
+                        item.x0,
+                        item.y1,
+                        item.size,
+                    )
+            elif isinstance(item, LTTextLine):
+                for child in item:
+                    render(child)
+                if self.layoutmode != "loose":
+                    self.put_newline()
+            elif isinstance(item, LTTextBox):
+                self.begin_div(
+                    "textbox",
+                    1,
+                    item.x0,
+                    item.y1,
+                    item.width,
+                    item.height,
+                    item.get_writing_mode(),
+                )
+                for child in item:
+                    render(child)
+                self.end_div("textbox")
+            elif isinstance(item, LTChar):
+                fontname = make_compat_str(item.fontname)
+                self.put_text(item.get_text(), fontname, item.size)
+            elif isinstance(item, LTText):
+                self.write_text(item.get_text())
 
         render(ltpage)
         self._yoffset += self.pagemargin
@@ -661,7 +695,6 @@ def close(self) -> None:
 
 
 class XMLConverter(PDFConverter[AnyIO]):
-
     CONTROL = re.compile("[\x00-\x08\x0b-\x0c\x0e-\x1f]")
 
     def __init__(
@@ -675,7 +708,12 @@ def __init__(
         stripcontrol: bool = False,
     ) -> None:
         PDFConverter.__init__(
-            self, rsrcmgr, outfp, codec=codec, pageno=pageno, laparams=laparams
+            self,
+            rsrcmgr,
+            outfp,
+            codec=codec,
+            pageno=pageno,
+            laparams=laparams,
         )
 
         # write() assumes a codec for binary I/O, or no codec for text I/O.
@@ -712,7 +750,7 @@ def show_group(item: LTItem) -> None:
             if isinstance(item, LTTextBox):
                 self.write(
                     '<textbox id="%d" bbox="%s" />\n'
-                    % (item.index, bbox2str(item.bbox))
+                    % (item.index, bbox2str(item.bbox)),
                 )
             elif isinstance(item, LTTextGroup):
                 self.write('<textgroup bbox="%s">\n' % bbox2str(item.bbox))
@@ -757,9 +795,7 @@ def render(item: LTItem) -> None:
                 )
                 self.write(s)
             elif isinstance(item, LTFigure):
-                s = '<figure name="{}" bbox="{}">\n'.format(
-                    item.name, bbox2str(item.bbox)
-                )
+                s = f'<figure name="{item.name}" bbox="{bbox2str(item.bbox)}">\n'
                 self.write(s)
                 for child in item:
                     render(child)
@@ -804,11 +840,12 @@ def render(item: LTItem) -> None:
                     name = self.imagewriter.export_image(item)
                     self.write(
                         '<image src="%s" width="%d" height="%d" />\n'
-                        % (enc(name), item.width, item.height)
+                        % (enc(name), item.width, item.height),
                     )
                 else:
                     self.write(
-                        '<image width="%d" height="%d" />\n' % (item.width, item.height)
+                        '<image width="%d" height="%d" />\n'
+                        % (item.width, item.height),
                     )
             else:
                 assert False, str(("Unhandled", item))
@@ -848,7 +885,12 @@ def __init__(
         stripcontrol: bool = False,
     ):
         PDFConverter.__init__(
-            self, rsrcmgr, outfp, codec=codec, pageno=pageno, laparams=laparams
+            self,
+            rsrcmgr,
+            outfp,
+            codec=codec,
+            pageno=pageno,
+            laparams=laparams,
         )
         self.stripcontrol = stripcontrol
         self.within_chars = False
@@ -874,24 +916,24 @@ def write_header(self) -> None:
         if self.codec:
             self.write(
                 "<html xmlns='http://www.w3.org/1999/xhtml' "
-                "xml:lang='en' lang='en' charset='%s'>\n" % self.codec
+                "xml:lang='en' lang='en' charset='%s'>\n" % self.codec,
             )
         else:
             self.write(
                 "<html xmlns='http://www.w3.org/1999/xhtml' "
-                "xml:lang='en' lang='en'>\n"
+                "xml:lang='en' lang='en'>\n",
             )
         self.write("<head>\n")
         self.write("<title></title>\n")
         self.write(
-            "<meta http-equiv='Content-Type' " "content='text/html;charset=utf-8' />\n"
+            "<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />\n",
         )
         self.write(
-            "<meta name='ocr-system' " "content='pdfminer.six HOCR Converter' />\n"
+            "<meta name='ocr-system' content='pdfminer.six HOCR Converter' />\n",
         )
         self.write(
             "  <meta name='ocr-capabilities'"
-            " content='ocr_page ocr_block ocr_line ocrx_word'/>\n"
+            " content='ocr_page ocr_block ocr_line ocrx_word'/>\n",
         )
         self.write("</head>\n")
         self.write("<body>\n")
@@ -899,7 +941,7 @@ def write_header(self) -> None:
     def write_footer(self) -> None:
         self.write("<!-- comment in the following line to debug -->\n")
         self.write(
-            "<!--script src='https://unpkg.com/hocrjs'>" "</script--></body></html>\n"
+            "<!--script src='https://unpkg.com/hocrjs'></script--></body></html>\n",
         )
 
     def write_text(self, text: str) -> None:
@@ -928,7 +970,7 @@ def write_word(self) -> None:
                         self.working_size,
                         self.working_text.strip(),
                     )
-                )
+                ),
             )
         self.within_chars = False
 
@@ -940,14 +982,14 @@ def render(item: LTItem) -> None:
                 self.page_bbox = item.bbox
                 self.write(
                     "<div class='ocr_page' id='%s' title='%s'>\n"
-                    % (item.pageid, self.bbox_repr(item.bbox))
+                    % (item.pageid, self.bbox_repr(item.bbox)),
                 )
                 for child in item:
                     render(child)
                 self.write("</div>\n")
             elif isinstance(item, LTTextLine):
                 self.write(
-                    "<span class='ocr_line' title='%s'>" % (self.bbox_repr(item.bbox))
+                    "<span class='ocr_line' title='%s'>" % (self.bbox_repr(item.bbox)),
                 )
                 for child_line in item:
                     render(child_line)
@@ -955,7 +997,7 @@ def render(item: LTItem) -> None:
             elif isinstance(item, LTTextBox):
                 self.write(
                     "<div class='ocr_block' id='%d' title='%s'>\n"
-                    % (item.index, self.bbox_repr(item.bbox))
+                    % (item.index, self.bbox_repr(item.bbox)),
                 )
                 for child in item:
                     render(child)
@@ -967,27 +1009,26 @@ def render(item: LTItem) -> None:
                     self.working_bbox = item.bbox
                     self.working_font = item.fontname
                     self.working_size = item.size
+                elif len(item.get_text().strip()) == 0:
+                    self.write_word()
+                    self.write(item.get_text())
                 else:
-                    if len(item.get_text().strip()) == 0:
+                    if (
+                        self.working_bbox[1] != item.bbox[1]
+                        or self.working_font != item.fontname
+                        or self.working_size != item.size
+                    ):
                         self.write_word()
-                        self.write(item.get_text())
-                    else:
-                        if (
-                            self.working_bbox[1] != item.bbox[1]
-                            or self.working_font != item.fontname
-                            or self.working_size != item.size
-                        ):
-                            self.write_word()
-                            self.working_bbox = item.bbox
-                            self.working_font = item.fontname
-                            self.working_size = item.size
-                        self.working_text += item.get_text()
-                        self.working_bbox = (
-                            self.working_bbox[0],
-                            self.working_bbox[1],
-                            item.bbox[2],
-                            self.working_bbox[3],
-                        )
+                        self.working_bbox = item.bbox
+                        self.working_font = item.fontname
+                        self.working_size = item.size
+                    self.working_text += item.get_text()
+                    self.working_bbox = (
+                        self.working_bbox[0],
+                        self.working_bbox[1],
+                        item.bbox[2],
+                        self.working_bbox[3],
+                    )
 
         render(ltpage)
 
diff --git a/pdfminer/data_structures.py b/pdfminer/data_structures.py
index 6e3f985d..21861520 100644
--- a/pdfminer/data_structures.py
+++ b/pdfminer/data_structures.py
@@ -2,7 +2,7 @@
 
 from pdfminer import settings
 from pdfminer.pdfparser import PDFSyntaxError
-from pdfminer.pdftypes import list_value, int_value, dict_value
+from pdfminer.pdftypes import dict_value, int_value, list_value
 from pdfminer.utils import choplist
 
 
diff --git a/pdfminer/encodingdb.py b/pdfminer/encodingdb.py
index 2a08935e..7a3baf1a 100644
--- a/pdfminer/encodingdb.py
+++ b/pdfminer/encodingdb.py
@@ -2,10 +2,10 @@
 import re
 from typing import Dict, Iterable, Optional, cast
 
-from .pdfexceptions import PDFKeyError
-from .glyphlist import glyphname2unicode
-from .latin_enc import ENCODING
-from .psparser import PSLiteral
+from pdfminer.glyphlist import glyphname2unicode
+from pdfminer.latin_enc import ENCODING
+from pdfminer.pdfexceptions import PDFKeyError
+from pdfminer.psparser import PSLiteral
 
 HEXADECIMAL = re.compile(r"[0-9a-fA-F]+")
 
@@ -29,7 +29,7 @@ def name2unicode(name: str) -> str:
     if not isinstance(name, str):
         raise PDFKeyError(
             'Could not convert unicode name "%s" to character because '
-            "it should be of type str but is of type %s" % (name, type(name))
+            "it should be of type str but is of type %s" % (name, type(name)),
         )
 
     name = name.split(".")[0]
@@ -38,34 +38,33 @@ def name2unicode(name: str) -> str:
     if len(components) > 1:
         return "".join(map(name2unicode, components))
 
-    else:
-        if name in glyphname2unicode:
-            return glyphname2unicode[name]
+    elif name in glyphname2unicode:
+        return glyphname2unicode[name]
 
-        elif name.startswith("uni"):
-            name_without_uni = name.strip("uni")
+    elif name.startswith("uni"):
+        name_without_uni = name.strip("uni")
 
-            if HEXADECIMAL.match(name_without_uni) and len(name_without_uni) % 4 == 0:
-                unicode_digits = [
-                    int(name_without_uni[i : i + 4], base=16)
-                    for i in range(0, len(name_without_uni), 4)
-                ]
-                for digit in unicode_digits:
-                    raise_key_error_for_invalid_unicode(digit)
-                characters = map(chr, unicode_digits)
-                return "".join(characters)
+        if HEXADECIMAL.match(name_without_uni) and len(name_without_uni) % 4 == 0:
+            unicode_digits = [
+                int(name_without_uni[i : i + 4], base=16)
+                for i in range(0, len(name_without_uni), 4)
+            ]
+            for digit in unicode_digits:
+                raise_key_error_for_invalid_unicode(digit)
+            characters = map(chr, unicode_digits)
+            return "".join(characters)
 
-        elif name.startswith("u"):
-            name_without_u = name.strip("u")
+    elif name.startswith("u"):
+        name_without_u = name.strip("u")
 
-            if HEXADECIMAL.match(name_without_u) and 4 <= len(name_without_u) <= 6:
-                unicode_digit = int(name_without_u, base=16)
-                raise_key_error_for_invalid_unicode(unicode_digit)
-                return chr(unicode_digit)
+        if HEXADECIMAL.match(name_without_u) and 4 <= len(name_without_u) <= 6:
+            unicode_digit = int(name_without_u, base=16)
+            raise_key_error_for_invalid_unicode(unicode_digit)
+            return chr(unicode_digit)
 
     raise PDFKeyError(
         'Could not convert unicode name "%s" to character because '
-        "it does not match specification" % name
+        "it does not match specification" % name,
     )
 
 
@@ -78,17 +77,16 @@ def raise_key_error_for_invalid_unicode(unicode_digit: int) -> None:
     if 55295 < unicode_digit < 57344:
         raise PDFKeyError(
             "Unicode digit %d is invalid because "
-            "it is in the range D800 through DFFF" % unicode_digit
+            "it is in the range D800 through DFFF" % unicode_digit,
         )
 
 
 class EncodingDB:
-
     std2unicode: Dict[int, str] = {}
     mac2unicode: Dict[int, str] = {}
     win2unicode: Dict[int, str] = {}
     pdf2unicode: Dict[int, str] = {}
-    for (name, std, mac, win, pdf) in ENCODING:
+    for name, std, mac, win, pdf in ENCODING:
         c = name2unicode(name)
         if std:
             std2unicode[std] = c
@@ -108,7 +106,9 @@ class EncodingDB:
 
     @classmethod
     def get_encoding(
-        cls, name: str, diff: Optional[Iterable[object]] = None
+        cls,
+        name: str,
+        diff: Optional[Iterable[object]] = None,
     ) -> Dict[int, str]:
         cid2unicode = cls.encodings.get(name, cls.std2unicode)
         if diff:
diff --git a/pdfminer/fontmetrics.py b/pdfminer/fontmetrics.py
index 72038a10..b6780b96 100644
--- a/pdfminer/fontmetrics.py
+++ b/pdfminer/fontmetrics.py
@@ -1,4 +1,4 @@
-""" Font metrics for the Adobe core 14 fonts.
+"""Font metrics for the Adobe core 14 fonts.
 
 Font metrics are used to compute the boundary of each character
 written with a proportional font.
@@ -65,7 +65,7 @@ def convert_font_metrics(path: str) -> None:
                 props[k] = tuple(map(float, f[1:5]))
         print("# -*- python -*-")
         print("FONT_METRICS = {")
-        for (fontname, (props, chars)) in fonts.items():
+        for fontname, (props, chars) in fonts.items():
             print(f" {fontname!r}: {(props, chars)!r},")
         print("}")
 
diff --git a/pdfminer/glyphlist.py b/pdfminer/glyphlist.py
index a7b4d1fb..3dd71bd3 100644
--- a/pdfminer/glyphlist.py
+++ b/pdfminer/glyphlist.py
@@ -1,4 +1,4 @@
-""" Mappings from Adobe glyph names to Unicode characters.
+"""Mappings from Adobe glyph names to Unicode characters.
 
 In some CMap tables, Adobe glyph names are used for specifying
 Unicode characters instead of using decimal/hex character code.
@@ -76,225 +76,225 @@ def convert_glyphlist(path: str) -> None:
             (name, x) = line.split(";")
             codes = x.split(" ")
             print(
-                " {!r}: u'{}',".format(name, "".join("\\u%s" % code for code in codes))
+                " {!r}: u'{}',".format(name, "".join("\\u%s" % code for code in codes)),
             )
 
 
 glyphname2unicode = {
     "A": "\u0041",
-    "AE": "\u00C6",
-    "AEacute": "\u01FC",
-    "AEmacron": "\u01E2",
-    "AEsmall": "\uF7E6",
-    "Aacute": "\u00C1",
-    "Aacutesmall": "\uF7E1",
+    "AE": "\u00c6",
+    "AEacute": "\u01fc",
+    "AEmacron": "\u01e2",
+    "AEsmall": "\uf7e6",
+    "Aacute": "\u00c1",
+    "Aacutesmall": "\uf7e1",
     "Abreve": "\u0102",
-    "Abreveacute": "\u1EAE",
-    "Abrevecyrillic": "\u04D0",
-    "Abrevedotbelow": "\u1EB6",
-    "Abrevegrave": "\u1EB0",
-    "Abrevehookabove": "\u1EB2",
-    "Abrevetilde": "\u1EB4",
-    "Acaron": "\u01CD",
-    "Acircle": "\u24B6",
-    "Acircumflex": "\u00C2",
-    "Acircumflexacute": "\u1EA4",
-    "Acircumflexdotbelow": "\u1EAC",
-    "Acircumflexgrave": "\u1EA6",
-    "Acircumflexhookabove": "\u1EA8",
-    "Acircumflexsmall": "\uF7E2",
-    "Acircumflextilde": "\u1EAA",
-    "Acute": "\uF6C9",
-    "Acutesmall": "\uF7B4",
+    "Abreveacute": "\u1eae",
+    "Abrevecyrillic": "\u04d0",
+    "Abrevedotbelow": "\u1eb6",
+    "Abrevegrave": "\u1eb0",
+    "Abrevehookabove": "\u1eb2",
+    "Abrevetilde": "\u1eb4",
+    "Acaron": "\u01cd",
+    "Acircle": "\u24b6",
+    "Acircumflex": "\u00c2",
+    "Acircumflexacute": "\u1ea4",
+    "Acircumflexdotbelow": "\u1eac",
+    "Acircumflexgrave": "\u1ea6",
+    "Acircumflexhookabove": "\u1ea8",
+    "Acircumflexsmall": "\uf7e2",
+    "Acircumflextilde": "\u1eaa",
+    "Acute": "\uf6c9",
+    "Acutesmall": "\uf7b4",
     "Acyrillic": "\u0410",
     "Adblgrave": "\u0200",
-    "Adieresis": "\u00C4",
-    "Adieresiscyrillic": "\u04D2",
-    "Adieresismacron": "\u01DE",
-    "Adieresissmall": "\uF7E4",
-    "Adotbelow": "\u1EA0",
-    "Adotmacron": "\u01E0",
-    "Agrave": "\u00C0",
-    "Agravesmall": "\uF7E0",
-    "Ahookabove": "\u1EA2",
-    "Aiecyrillic": "\u04D4",
+    "Adieresis": "\u00c4",
+    "Adieresiscyrillic": "\u04d2",
+    "Adieresismacron": "\u01de",
+    "Adieresissmall": "\uf7e4",
+    "Adotbelow": "\u1ea0",
+    "Adotmacron": "\u01e0",
+    "Agrave": "\u00c0",
+    "Agravesmall": "\uf7e0",
+    "Ahookabove": "\u1ea2",
+    "Aiecyrillic": "\u04d4",
     "Ainvertedbreve": "\u0202",
     "Alpha": "\u0391",
     "Alphatonos": "\u0386",
     "Amacron": "\u0100",
-    "Amonospace": "\uFF21",
+    "Amonospace": "\uff21",
     "Aogonek": "\u0104",
-    "Aring": "\u00C5",
-    "Aringacute": "\u01FA",
-    "Aringbelow": "\u1E00",
-    "Aringsmall": "\uF7E5",
-    "Asmall": "\uF761",
-    "Atilde": "\u00C3",
-    "Atildesmall": "\uF7E3",
+    "Aring": "\u00c5",
+    "Aringacute": "\u01fa",
+    "Aringbelow": "\u1e00",
+    "Aringsmall": "\uf7e5",
+    "Asmall": "\uf761",
+    "Atilde": "\u00c3",
+    "Atildesmall": "\uf7e3",
     "Aybarmenian": "\u0531",
     "B": "\u0042",
-    "Bcircle": "\u24B7",
-    "Bdotaccent": "\u1E02",
-    "Bdotbelow": "\u1E04",
+    "Bcircle": "\u24b7",
+    "Bdotaccent": "\u1e02",
+    "Bdotbelow": "\u1e04",
     "Becyrillic": "\u0411",
     "Benarmenian": "\u0532",
     "Beta": "\u0392",
     "Bhook": "\u0181",
-    "Blinebelow": "\u1E06",
-    "Bmonospace": "\uFF22",
-    "Brevesmall": "\uF6F4",
-    "Bsmall": "\uF762",
+    "Blinebelow": "\u1e06",
+    "Bmonospace": "\uff22",
+    "Brevesmall": "\uf6f4",
+    "Bsmall": "\uf762",
     "Btopbar": "\u0182",
     "C": "\u0043",
-    "Caarmenian": "\u053E",
+    "Caarmenian": "\u053e",
     "Cacute": "\u0106",
-    "Caron": "\uF6CA",
-    "Caronsmall": "\uF6F5",
-    "Ccaron": "\u010C",
-    "Ccedilla": "\u00C7",
-    "Ccedillaacute": "\u1E08",
-    "Ccedillasmall": "\uF7E7",
-    "Ccircle": "\u24B8",
+    "Caron": "\uf6ca",
+    "Caronsmall": "\uf6f5",
+    "Ccaron": "\u010c",
+    "Ccedilla": "\u00c7",
+    "Ccedillaacute": "\u1e08",
+    "Ccedillasmall": "\uf7e7",
+    "Ccircle": "\u24b8",
     "Ccircumflex": "\u0108",
-    "Cdot": "\u010A",
-    "Cdotaccent": "\u010A",
-    "Cedillasmall": "\uF7B8",
+    "Cdot": "\u010a",
+    "Cdotaccent": "\u010a",
+    "Cedillasmall": "\uf7b8",
     "Chaarmenian": "\u0549",
-    "Cheabkhasiancyrillic": "\u04BC",
+    "Cheabkhasiancyrillic": "\u04bc",
     "Checyrillic": "\u0427",
-    "Chedescenderabkhasiancyrillic": "\u04BE",
-    "Chedescendercyrillic": "\u04B6",
-    "Chedieresiscyrillic": "\u04F4",
+    "Chedescenderabkhasiancyrillic": "\u04be",
+    "Chedescendercyrillic": "\u04b6",
+    "Chedieresiscyrillic": "\u04f4",
     "Cheharmenian": "\u0543",
-    "Chekhakassiancyrillic": "\u04CB",
-    "Cheverticalstrokecyrillic": "\u04B8",
-    "Chi": "\u03A7",
+    "Chekhakassiancyrillic": "\u04cb",
+    "Cheverticalstrokecyrillic": "\u04b8",
+    "Chi": "\u03a7",
     "Chook": "\u0187",
-    "Circumflexsmall": "\uF6F6",
-    "Cmonospace": "\uFF23",
+    "Circumflexsmall": "\uf6f6",
+    "Cmonospace": "\uff23",
     "Coarmenian": "\u0551",
-    "Csmall": "\uF763",
+    "Csmall": "\uf763",
     "D": "\u0044",
-    "DZ": "\u01F1",
-    "DZcaron": "\u01C4",
+    "DZ": "\u01f1",
+    "DZcaron": "\u01c4",
     "Daarmenian": "\u0534",
     "Dafrican": "\u0189",
-    "Dcaron": "\u010E",
-    "Dcedilla": "\u1E10",
-    "Dcircle": "\u24B9",
-    "Dcircumflexbelow": "\u1E12",
+    "Dcaron": "\u010e",
+    "Dcedilla": "\u1e10",
+    "Dcircle": "\u24b9",
+    "Dcircumflexbelow": "\u1e12",
     "Dcroat": "\u0110",
-    "Ddotaccent": "\u1E0A",
-    "Ddotbelow": "\u1E0C",
+    "Ddotaccent": "\u1e0a",
+    "Ddotbelow": "\u1e0c",
     "Decyrillic": "\u0414",
-    "Deicoptic": "\u03EE",
+    "Deicoptic": "\u03ee",
     "Delta": "\u2206",
     "Deltagreek": "\u0394",
-    "Dhook": "\u018A",
-    "Dieresis": "\uF6CB",
-    "DieresisAcute": "\uF6CC",
-    "DieresisGrave": "\uF6CD",
-    "Dieresissmall": "\uF7A8",
-    "Digammagreek": "\u03DC",
+    "Dhook": "\u018a",
+    "Dieresis": "\uf6cb",
+    "DieresisAcute": "\uf6cc",
+    "DieresisGrave": "\uf6cd",
+    "Dieresissmall": "\uf7a8",
+    "Digammagreek": "\u03dc",
     "Djecyrillic": "\u0402",
-    "Dlinebelow": "\u1E0E",
-    "Dmonospace": "\uFF24",
-    "Dotaccentsmall": "\uF6F7",
+    "Dlinebelow": "\u1e0e",
+    "Dmonospace": "\uff24",
+    "Dotaccentsmall": "\uf6f7",
     "Dslash": "\u0110",
-    "Dsmall": "\uF764",
-    "Dtopbar": "\u018B",
-    "Dz": "\u01F2",
-    "Dzcaron": "\u01C5",
-    "Dzeabkhasiancyrillic": "\u04E0",
+    "Dsmall": "\uf764",
+    "Dtopbar": "\u018b",
+    "Dz": "\u01f2",
+    "Dzcaron": "\u01c5",
+    "Dzeabkhasiancyrillic": "\u04e0",
     "Dzecyrillic": "\u0405",
-    "Dzhecyrillic": "\u040F",
+    "Dzhecyrillic": "\u040f",
     "E": "\u0045",
-    "Eacute": "\u00C9",
-    "Eacutesmall": "\uF7E9",
+    "Eacute": "\u00c9",
+    "Eacutesmall": "\uf7e9",
     "Ebreve": "\u0114",
-    "Ecaron": "\u011A",
-    "Ecedillabreve": "\u1E1C",
+    "Ecaron": "\u011a",
+    "Ecedillabreve": "\u1e1c",
     "Echarmenian": "\u0535",
-    "Ecircle": "\u24BA",
-    "Ecircumflex": "\u00CA",
-    "Ecircumflexacute": "\u1EBE",
-    "Ecircumflexbelow": "\u1E18",
-    "Ecircumflexdotbelow": "\u1EC6",
-    "Ecircumflexgrave": "\u1EC0",
-    "Ecircumflexhookabove": "\u1EC2",
-    "Ecircumflexsmall": "\uF7EA",
-    "Ecircumflextilde": "\u1EC4",
+    "Ecircle": "\u24ba",
+    "Ecircumflex": "\u00ca",
+    "Ecircumflexacute": "\u1ebe",
+    "Ecircumflexbelow": "\u1e18",
+    "Ecircumflexdotbelow": "\u1ec6",
+    "Ecircumflexgrave": "\u1ec0",
+    "Ecircumflexhookabove": "\u1ec2",
+    "Ecircumflexsmall": "\uf7ea",
+    "Ecircumflextilde": "\u1ec4",
     "Ecyrillic": "\u0404",
     "Edblgrave": "\u0204",
-    "Edieresis": "\u00CB",
-    "Edieresissmall": "\uF7EB",
+    "Edieresis": "\u00cb",
+    "Edieresissmall": "\uf7eb",
     "Edot": "\u0116",
     "Edotaccent": "\u0116",
-    "Edotbelow": "\u1EB8",
+    "Edotbelow": "\u1eb8",
     "Efcyrillic": "\u0424",
-    "Egrave": "\u00C8",
-    "Egravesmall": "\uF7E8",
+    "Egrave": "\u00c8",
+    "Egravesmall": "\uf7e8",
     "Eharmenian": "\u0537",
-    "Ehookabove": "\u1EBA",
+    "Ehookabove": "\u1eba",
     "Eightroman": "\u2167",
     "Einvertedbreve": "\u0206",
     "Eiotifiedcyrillic": "\u0464",
-    "Elcyrillic": "\u041B",
-    "Elevenroman": "\u216A",
+    "Elcyrillic": "\u041b",
+    "Elevenroman": "\u216a",
     "Emacron": "\u0112",
-    "Emacronacute": "\u1E16",
-    "Emacrongrave": "\u1E14",
-    "Emcyrillic": "\u041C",
-    "Emonospace": "\uFF25",
-    "Encyrillic": "\u041D",
-    "Endescendercyrillic": "\u04A2",
-    "Eng": "\u014A",
-    "Enghecyrillic": "\u04A4",
-    "Enhookcyrillic": "\u04C7",
+    "Emacronacute": "\u1e16",
+    "Emacrongrave": "\u1e14",
+    "Emcyrillic": "\u041c",
+    "Emonospace": "\uff25",
+    "Encyrillic": "\u041d",
+    "Endescendercyrillic": "\u04a2",
+    "Eng": "\u014a",
+    "Enghecyrillic": "\u04a4",
+    "Enhookcyrillic": "\u04c7",
     "Eogonek": "\u0118",
     "Eopen": "\u0190",
     "Epsilon": "\u0395",
     "Epsilontonos": "\u0388",
     "Ercyrillic": "\u0420",
-    "Ereversed": "\u018E",
-    "Ereversedcyrillic": "\u042D",
+    "Ereversed": "\u018e",
+    "Ereversedcyrillic": "\u042d",
     "Escyrillic": "\u0421",
-    "Esdescendercyrillic": "\u04AA",
-    "Esh": "\u01A9",
-    "Esmall": "\uF765",
+    "Esdescendercyrillic": "\u04aa",
+    "Esh": "\u01a9",
+    "Esmall": "\uf765",
     "Eta": "\u0397",
     "Etarmenian": "\u0538",
     "Etatonos": "\u0389",
-    "Eth": "\u00D0",
-    "Ethsmall": "\uF7F0",
-    "Etilde": "\u1EBC",
-    "Etildebelow": "\u1E1A",
-    "Euro": "\u20AC",
-    "Ezh": "\u01B7",
-    "Ezhcaron": "\u01EE",
-    "Ezhreversed": "\u01B8",
+    "Eth": "\u00d0",
+    "Ethsmall": "\uf7f0",
+    "Etilde": "\u1ebc",
+    "Etildebelow": "\u1e1a",
+    "Euro": "\u20ac",
+    "Ezh": "\u01b7",
+    "Ezhcaron": "\u01ee",
+    "Ezhreversed": "\u01b8",
     "F": "\u0046",
-    "Fcircle": "\u24BB",
-    "Fdotaccent": "\u1E1E",
+    "Fcircle": "\u24bb",
+    "Fdotaccent": "\u1e1e",
     "Feharmenian": "\u0556",
-    "Feicoptic": "\u03E4",
+    "Feicoptic": "\u03e4",
     "Fhook": "\u0191",
     "Fitacyrillic": "\u0472",
     "Fiveroman": "\u2164",
-    "Fmonospace": "\uFF26",
+    "Fmonospace": "\uff26",
     "Fourroman": "\u2163",
-    "Fsmall": "\uF766",
+    "Fsmall": "\uf766",
     "G": "\u0047",
     "GBsquare": "\u3387",
-    "Gacute": "\u01F4",
+    "Gacute": "\u01f4",
     "Gamma": "\u0393",
     "Gammaafrican": "\u0194",
-    "Gangiacoptic": "\u03EA",
-    "Gbreve": "\u011E",
-    "Gcaron": "\u01E6",
+    "Gangiacoptic": "\u03ea",
+    "Gbreve": "\u011e",
+    "Gcaron": "\u01e6",
     "Gcedilla": "\u0122",
-    "Gcircle": "\u24BC",
-    "Gcircumflex": "\u011C",
+    "Gcircle": "\u24bc",
+    "Gcircumflex": "\u011c",
     "Gcommaaccent": "\u0122",
     "Gdot": "\u0120",
     "Gdotaccent": "\u0120",
@@ -306,289 +306,289 @@ def convert_glyphlist(path: str) -> None:
     "Ghook": "\u0193",
     "Gimarmenian": "\u0533",
     "Gjecyrillic": "\u0403",
-    "Gmacron": "\u1E20",
-    "Gmonospace": "\uFF27",
-    "Grave": "\uF6CE",
-    "Gravesmall": "\uF760",
-    "Gsmall": "\uF767",
-    "Gsmallhook": "\u029B",
-    "Gstroke": "\u01E4",
+    "Gmacron": "\u1e20",
+    "Gmonospace": "\uff27",
+    "Grave": "\uf6ce",
+    "Gravesmall": "\uf760",
+    "Gsmall": "\uf767",
+    "Gsmallhook": "\u029b",
+    "Gstroke": "\u01e4",
     "H": "\u0048",
-    "H18533": "\u25CF",
-    "H18543": "\u25AA",
-    "H18551": "\u25AB",
-    "H22073": "\u25A1",
-    "HPsquare": "\u33CB",
-    "Haabkhasiancyrillic": "\u04A8",
-    "Hadescendercyrillic": "\u04B2",
-    "Hardsigncyrillic": "\u042A",
+    "H18533": "\u25cf",
+    "H18543": "\u25aa",
+    "H18551": "\u25ab",
+    "H22073": "\u25a1",
+    "HPsquare": "\u33cb",
+    "Haabkhasiancyrillic": "\u04a8",
+    "Hadescendercyrillic": "\u04b2",
+    "Hardsigncyrillic": "\u042a",
     "Hbar": "\u0126",
-    "Hbrevebelow": "\u1E2A",
-    "Hcedilla": "\u1E28",
-    "Hcircle": "\u24BD",
+    "Hbrevebelow": "\u1e2a",
+    "Hcedilla": "\u1e28",
+    "Hcircle": "\u24bd",
     "Hcircumflex": "\u0124",
-    "Hdieresis": "\u1E26",
-    "Hdotaccent": "\u1E22",
-    "Hdotbelow": "\u1E24",
-    "Hmonospace": "\uFF28",
+    "Hdieresis": "\u1e26",
+    "Hdotaccent": "\u1e22",
+    "Hdotbelow": "\u1e24",
+    "Hmonospace": "\uff28",
     "Hoarmenian": "\u0540",
-    "Horicoptic": "\u03E8",
-    "Hsmall": "\uF768",
-    "Hungarumlaut": "\uF6CF",
-    "Hungarumlautsmall": "\uF6F8",
+    "Horicoptic": "\u03e8",
+    "Hsmall": "\uf768",
+    "Hungarumlaut": "\uf6cf",
+    "Hungarumlautsmall": "\uf6f8",
     "Hzsquare": "\u3390",
     "I": "\u0049",
-    "IAcyrillic": "\u042F",
+    "IAcyrillic": "\u042f",
     "IJ": "\u0132",
-    "IUcyrillic": "\u042E",
-    "Iacute": "\u00CD",
-    "Iacutesmall": "\uF7ED",
-    "Ibreve": "\u012C",
-    "Icaron": "\u01CF",
-    "Icircle": "\u24BE",
-    "Icircumflex": "\u00CE",
-    "Icircumflexsmall": "\uF7EE",
+    "IUcyrillic": "\u042e",
+    "Iacute": "\u00cd",
+    "Iacutesmall": "\uf7ed",
+    "Ibreve": "\u012c",
+    "Icaron": "\u01cf",
+    "Icircle": "\u24be",
+    "Icircumflex": "\u00ce",
+    "Icircumflexsmall": "\uf7ee",
     "Icyrillic": "\u0406",
     "Idblgrave": "\u0208",
-    "Idieresis": "\u00CF",
-    "Idieresisacute": "\u1E2E",
-    "Idieresiscyrillic": "\u04E4",
-    "Idieresissmall": "\uF7EF",
+    "Idieresis": "\u00cf",
+    "Idieresisacute": "\u1e2e",
+    "Idieresiscyrillic": "\u04e4",
+    "Idieresissmall": "\uf7ef",
     "Idot": "\u0130",
     "Idotaccent": "\u0130",
-    "Idotbelow": "\u1ECA",
-    "Iebrevecyrillic": "\u04D6",
+    "Idotbelow": "\u1eca",
+    "Iebrevecyrillic": "\u04d6",
     "Iecyrillic": "\u0415",
     "Ifraktur": "\u2111",
-    "Igrave": "\u00CC",
-    "Igravesmall": "\uF7EC",
-    "Ihookabove": "\u1EC8",
+    "Igrave": "\u00cc",
+    "Igravesmall": "\uf7ec",
+    "Ihookabove": "\u1ec8",
     "Iicyrillic": "\u0418",
-    "Iinvertedbreve": "\u020A",
+    "Iinvertedbreve": "\u020a",
     "Iishortcyrillic": "\u0419",
-    "Imacron": "\u012A",
-    "Imacroncyrillic": "\u04E2",
-    "Imonospace": "\uFF29",
-    "Iniarmenian": "\u053B",
+    "Imacron": "\u012a",
+    "Imacroncyrillic": "\u04e2",
+    "Imonospace": "\uff29",
+    "Iniarmenian": "\u053b",
     "Iocyrillic": "\u0401",
-    "Iogonek": "\u012E",
+    "Iogonek": "\u012e",
     "Iota": "\u0399",
     "Iotaafrican": "\u0196",
-    "Iotadieresis": "\u03AA",
-    "Iotatonos": "\u038A",
-    "Ismall": "\uF769",
+    "Iotadieresis": "\u03aa",
+    "Iotatonos": "\u038a",
+    "Ismall": "\uf769",
     "Istroke": "\u0197",
     "Itilde": "\u0128",
-    "Itildebelow": "\u1E2C",
+    "Itildebelow": "\u1e2c",
     "Izhitsacyrillic": "\u0474",
     "Izhitsadblgravecyrillic": "\u0476",
-    "J": "\u004A",
+    "J": "\u004a",
     "Jaarmenian": "\u0541",
-    "Jcircle": "\u24BF",
+    "Jcircle": "\u24bf",
     "Jcircumflex": "\u0134",
     "Jecyrillic": "\u0408",
-    "Jheharmenian": "\u054B",
-    "Jmonospace": "\uFF2A",
-    "Jsmall": "\uF76A",
-    "K": "\u004B",
+    "Jheharmenian": "\u054b",
+    "Jmonospace": "\uff2a",
+    "Jsmall": "\uf76a",
+    "K": "\u004b",
     "KBsquare": "\u3385",
-    "KKsquare": "\u33CD",
-    "Kabashkircyrillic": "\u04A0",
-    "Kacute": "\u1E30",
-    "Kacyrillic": "\u041A",
-    "Kadescendercyrillic": "\u049A",
-    "Kahookcyrillic": "\u04C3",
-    "Kappa": "\u039A",
-    "Kastrokecyrillic": "\u049E",
-    "Kaverticalstrokecyrillic": "\u049C",
-    "Kcaron": "\u01E8",
+    "KKsquare": "\u33cd",
+    "Kabashkircyrillic": "\u04a0",
+    "Kacute": "\u1e30",
+    "Kacyrillic": "\u041a",
+    "Kadescendercyrillic": "\u049a",
+    "Kahookcyrillic": "\u04c3",
+    "Kappa": "\u039a",
+    "Kastrokecyrillic": "\u049e",
+    "Kaverticalstrokecyrillic": "\u049c",
+    "Kcaron": "\u01e8",
     "Kcedilla": "\u0136",
-    "Kcircle": "\u24C0",
+    "Kcircle": "\u24c0",
     "Kcommaaccent": "\u0136",
-    "Kdotbelow": "\u1E32",
+    "Kdotbelow": "\u1e32",
     "Keharmenian": "\u0554",
-    "Kenarmenian": "\u053F",
+    "Kenarmenian": "\u053f",
     "Khacyrillic": "\u0425",
-    "Kheicoptic": "\u03E6",
+    "Kheicoptic": "\u03e6",
     "Khook": "\u0198",
-    "Kjecyrillic": "\u040C",
-    "Klinebelow": "\u1E34",
-    "Kmonospace": "\uFF2B",
+    "Kjecyrillic": "\u040c",
+    "Klinebelow": "\u1e34",
+    "Kmonospace": "\uff2b",
     "Koppacyrillic": "\u0480",
-    "Koppagreek": "\u03DE",
-    "Ksicyrillic": "\u046E",
-    "Ksmall": "\uF76B",
-    "L": "\u004C",
-    "LJ": "\u01C7",
-    "LL": "\uF6BF",
+    "Koppagreek": "\u03de",
+    "Ksicyrillic": "\u046e",
+    "Ksmall": "\uf76b",
+    "L": "\u004c",
+    "LJ": "\u01c7",
+    "LL": "\uf6bf",
     "Lacute": "\u0139",
-    "Lambda": "\u039B",
-    "Lcaron": "\u013D",
-    "Lcedilla": "\u013B",
-    "Lcircle": "\u24C1",
-    "Lcircumflexbelow": "\u1E3C",
-    "Lcommaaccent": "\u013B",
-    "Ldot": "\u013F",
-    "Ldotaccent": "\u013F",
-    "Ldotbelow": "\u1E36",
-    "Ldotbelowmacron": "\u1E38",
-    "Liwnarmenian": "\u053C",
-    "Lj": "\u01C8",
+    "Lambda": "\u039b",
+    "Lcaron": "\u013d",
+    "Lcedilla": "\u013b",
+    "Lcircle": "\u24c1",
+    "Lcircumflexbelow": "\u1e3c",
+    "Lcommaaccent": "\u013b",
+    "Ldot": "\u013f",
+    "Ldotaccent": "\u013f",
+    "Ldotbelow": "\u1e36",
+    "Ldotbelowmacron": "\u1e38",
+    "Liwnarmenian": "\u053c",
+    "Lj": "\u01c8",
     "Ljecyrillic": "\u0409",
-    "Llinebelow": "\u1E3A",
-    "Lmonospace": "\uFF2C",
+    "Llinebelow": "\u1e3a",
+    "Lmonospace": "\uff2c",
     "Lslash": "\u0141",
-    "Lslashsmall": "\uF6F9",
-    "Lsmall": "\uF76C",
-    "M": "\u004D",
+    "Lslashsmall": "\uf6f9",
+    "Lsmall": "\uf76c",
+    "M": "\u004d",
     "MBsquare": "\u3386",
-    "Macron": "\uF6D0",
-    "Macronsmall": "\uF7AF",
-    "Macute": "\u1E3E",
-    "Mcircle": "\u24C2",
-    "Mdotaccent": "\u1E40",
-    "Mdotbelow": "\u1E42",
+    "Macron": "\uf6d0",
+    "Macronsmall": "\uf7af",
+    "Macute": "\u1e3e",
+    "Mcircle": "\u24c2",
+    "Mdotaccent": "\u1e40",
+    "Mdotbelow": "\u1e42",
     "Menarmenian": "\u0544",
-    "Mmonospace": "\uFF2D",
-    "Msmall": "\uF76D",
-    "Mturned": "\u019C",
-    "Mu": "\u039C",
-    "N": "\u004E",
-    "NJ": "\u01CA",
+    "Mmonospace": "\uff2d",
+    "Msmall": "\uf76d",
+    "Mturned": "\u019c",
+    "Mu": "\u039c",
+    "N": "\u004e",
+    "NJ": "\u01ca",
     "Nacute": "\u0143",
     "Ncaron": "\u0147",
     "Ncedilla": "\u0145",
-    "Ncircle": "\u24C3",
-    "Ncircumflexbelow": "\u1E4A",
+    "Ncircle": "\u24c3",
+    "Ncircumflexbelow": "\u1e4a",
     "Ncommaaccent": "\u0145",
-    "Ndotaccent": "\u1E44",
-    "Ndotbelow": "\u1E46",
-    "Nhookleft": "\u019D",
+    "Ndotaccent": "\u1e44",
+    "Ndotbelow": "\u1e46",
+    "Nhookleft": "\u019d",
     "Nineroman": "\u2168",
-    "Nj": "\u01CB",
-    "Njecyrillic": "\u040A",
-    "Nlinebelow": "\u1E48",
-    "Nmonospace": "\uFF2E",
+    "Nj": "\u01cb",
+    "Njecyrillic": "\u040a",
+    "Nlinebelow": "\u1e48",
+    "Nmonospace": "\uff2e",
     "Nowarmenian": "\u0546",
-    "Nsmall": "\uF76E",
-    "Ntilde": "\u00D1",
-    "Ntildesmall": "\uF7F1",
-    "Nu": "\u039D",
-    "O": "\u004F",
+    "Nsmall": "\uf76e",
+    "Ntilde": "\u00d1",
+    "Ntildesmall": "\uf7f1",
+    "Nu": "\u039d",
+    "O": "\u004f",
     "OE": "\u0152",
-    "OEsmall": "\uF6FA",
-    "Oacute": "\u00D3",
-    "Oacutesmall": "\uF7F3",
-    "Obarredcyrillic": "\u04E8",
-    "Obarreddieresiscyrillic": "\u04EA",
-    "Obreve": "\u014E",
-    "Ocaron": "\u01D1",
-    "Ocenteredtilde": "\u019F",
-    "Ocircle": "\u24C4",
-    "Ocircumflex": "\u00D4",
-    "Ocircumflexacute": "\u1ED0",
-    "Ocircumflexdotbelow": "\u1ED8",
-    "Ocircumflexgrave": "\u1ED2",
-    "Ocircumflexhookabove": "\u1ED4",
-    "Ocircumflexsmall": "\uF7F4",
-    "Ocircumflextilde": "\u1ED6",
-    "Ocyrillic": "\u041E",
+    "OEsmall": "\uf6fa",
+    "Oacute": "\u00d3",
+    "Oacutesmall": "\uf7f3",
+    "Obarredcyrillic": "\u04e8",
+    "Obarreddieresiscyrillic": "\u04ea",
+    "Obreve": "\u014e",
+    "Ocaron": "\u01d1",
+    "Ocenteredtilde": "\u019f",
+    "Ocircle": "\u24c4",
+    "Ocircumflex": "\u00d4",
+    "Ocircumflexacute": "\u1ed0",
+    "Ocircumflexdotbelow": "\u1ed8",
+    "Ocircumflexgrave": "\u1ed2",
+    "Ocircumflexhookabove": "\u1ed4",
+    "Ocircumflexsmall": "\uf7f4",
+    "Ocircumflextilde": "\u1ed6",
+    "Ocyrillic": "\u041e",
     "Odblacute": "\u0150",
-    "Odblgrave": "\u020C",
-    "Odieresis": "\u00D6",
-    "Odieresiscyrillic": "\u04E6",
-    "Odieresissmall": "\uF7F6",
-    "Odotbelow": "\u1ECC",
-    "Ogoneksmall": "\uF6FB",
-    "Ograve": "\u00D2",
-    "Ogravesmall": "\uF7F2",
+    "Odblgrave": "\u020c",
+    "Odieresis": "\u00d6",
+    "Odieresiscyrillic": "\u04e6",
+    "Odieresissmall": "\uf7f6",
+    "Odotbelow": "\u1ecc",
+    "Ogoneksmall": "\uf6fb",
+    "Ograve": "\u00d2",
+    "Ogravesmall": "\uf7f2",
     "Oharmenian": "\u0555",
     "Ohm": "\u2126",
-    "Ohookabove": "\u1ECE",
-    "Ohorn": "\u01A0",
-    "Ohornacute": "\u1EDA",
-    "Ohorndotbelow": "\u1EE2",
-    "Ohorngrave": "\u1EDC",
-    "Ohornhookabove": "\u1EDE",
-    "Ohorntilde": "\u1EE0",
+    "Ohookabove": "\u1ece",
+    "Ohorn": "\u01a0",
+    "Ohornacute": "\u1eda",
+    "Ohorndotbelow": "\u1ee2",
+    "Ohorngrave": "\u1edc",
+    "Ohornhookabove": "\u1ede",
+    "Ohorntilde": "\u1ee0",
     "Ohungarumlaut": "\u0150",
-    "Oi": "\u01A2",
-    "Oinvertedbreve": "\u020E",
-    "Omacron": "\u014C",
-    "Omacronacute": "\u1E52",
-    "Omacrongrave": "\u1E50",
+    "Oi": "\u01a2",
+    "Oinvertedbreve": "\u020e",
+    "Omacron": "\u014c",
+    "Omacronacute": "\u1e52",
+    "Omacrongrave": "\u1e50",
     "Omega": "\u2126",
     "Omegacyrillic": "\u0460",
-    "Omegagreek": "\u03A9",
-    "Omegaroundcyrillic": "\u047A",
-    "Omegatitlocyrillic": "\u047C",
-    "Omegatonos": "\u038F",
-    "Omicron": "\u039F",
-    "Omicrontonos": "\u038C",
-    "Omonospace": "\uFF2F",
+    "Omegagreek": "\u03a9",
+    "Omegaroundcyrillic": "\u047a",
+    "Omegatitlocyrillic": "\u047c",
+    "Omegatonos": "\u038f",
+    "Omicron": "\u039f",
+    "Omicrontonos": "\u038c",
+    "Omonospace": "\uff2f",
     "Oneroman": "\u2160",
-    "Oogonek": "\u01EA",
-    "Oogonekmacron": "\u01EC",
+    "Oogonek": "\u01ea",
+    "Oogonekmacron": "\u01ec",
     "Oopen": "\u0186",
-    "Oslash": "\u00D8",
-    "Oslashacute": "\u01FE",
-    "Oslashsmall": "\uF7F8",
-    "Osmall": "\uF76F",
-    "Ostrokeacute": "\u01FE",
-    "Otcyrillic": "\u047E",
-    "Otilde": "\u00D5",
-    "Otildeacute": "\u1E4C",
-    "Otildedieresis": "\u1E4E",
-    "Otildesmall": "\uF7F5",
+    "Oslash": "\u00d8",
+    "Oslashacute": "\u01fe",
+    "Oslashsmall": "\uf7f8",
+    "Osmall": "\uf76f",
+    "Ostrokeacute": "\u01fe",
+    "Otcyrillic": "\u047e",
+    "Otilde": "\u00d5",
+    "Otildeacute": "\u1e4c",
+    "Otildedieresis": "\u1e4e",
+    "Otildesmall": "\uf7f5",
     "P": "\u0050",
-    "Pacute": "\u1E54",
-    "Pcircle": "\u24C5",
-    "Pdotaccent": "\u1E56",
-    "Pecyrillic": "\u041F",
-    "Peharmenian": "\u054A",
-    "Pemiddlehookcyrillic": "\u04A6",
-    "Phi": "\u03A6",
-    "Phook": "\u01A4",
-    "Pi": "\u03A0",
+    "Pacute": "\u1e54",
+    "Pcircle": "\u24c5",
+    "Pdotaccent": "\u1e56",
+    "Pecyrillic": "\u041f",
+    "Peharmenian": "\u054a",
+    "Pemiddlehookcyrillic": "\u04a6",
+    "Phi": "\u03a6",
+    "Phook": "\u01a4",
+    "Pi": "\u03a0",
     "Piwrarmenian": "\u0553",
-    "Pmonospace": "\uFF30",
-    "Psi": "\u03A8",
+    "Pmonospace": "\uff30",
+    "Psi": "\u03a8",
     "Psicyrillic": "\u0470",
-    "Psmall": "\uF770",
+    "Psmall": "\uf770",
     "Q": "\u0051",
-    "Qcircle": "\u24C6",
-    "Qmonospace": "\uFF31",
-    "Qsmall": "\uF771",
+    "Qcircle": "\u24c6",
+    "Qmonospace": "\uff31",
+    "Qsmall": "\uf771",
     "R": "\u0052",
-    "Raarmenian": "\u054C",
+    "Raarmenian": "\u054c",
     "Racute": "\u0154",
     "Rcaron": "\u0158",
     "Rcedilla": "\u0156",
-    "Rcircle": "\u24C7",
+    "Rcircle": "\u24c7",
     "Rcommaaccent": "\u0156",
     "Rdblgrave": "\u0210",
-    "Rdotaccent": "\u1E58",
-    "Rdotbelow": "\u1E5A",
-    "Rdotbelowmacron": "\u1E5C",
+    "Rdotaccent": "\u1e58",
+    "Rdotbelow": "\u1e5a",
+    "Rdotbelowmacron": "\u1e5c",
     "Reharmenian": "\u0550",
-    "Rfraktur": "\u211C",
-    "Rho": "\u03A1",
-    "Ringsmall": "\uF6FC",
+    "Rfraktur": "\u211c",
+    "Rho": "\u03a1",
+    "Ringsmall": "\uf6fc",
     "Rinvertedbreve": "\u0212",
-    "Rlinebelow": "\u1E5E",
-    "Rmonospace": "\uFF32",
-    "Rsmall": "\uF772",
+    "Rlinebelow": "\u1e5e",
+    "Rmonospace": "\uff32",
+    "Rsmall": "\uf772",
     "Rsmallinverted": "\u0281",
-    "Rsmallinvertedsuperior": "\u02B6",
+    "Rsmallinvertedsuperior": "\u02b6",
     "S": "\u0053",
-    "SF010000": "\u250C",
+    "SF010000": "\u250c",
     "SF020000": "\u2514",
     "SF030000": "\u2510",
     "SF040000": "\u2518",
-    "SF050000": "\u253C",
-    "SF060000": "\u252C",
+    "SF050000": "\u253c",
+    "SF060000": "\u252c",
     "SF070000": "\u2534",
-    "SF080000": "\u251C",
+    "SF080000": "\u251c",
     "SF090000": "\u2524",
     "SF100000": "\u2500",
     "SF110000": "\u2502",
@@ -599,18 +599,18 @@ def convert_glyphlist(path: str) -> None:
     "SF230000": "\u2563",
     "SF240000": "\u2551",
     "SF250000": "\u2557",
-    "SF260000": "\u255D",
-    "SF270000": "\u255C",
-    "SF280000": "\u255B",
-    "SF360000": "\u255E",
-    "SF370000": "\u255F",
-    "SF380000": "\u255A",
+    "SF260000": "\u255d",
+    "SF270000": "\u255c",
+    "SF280000": "\u255b",
+    "SF360000": "\u255e",
+    "SF370000": "\u255f",
+    "SF380000": "\u255a",
     "SF390000": "\u2554",
     "SF400000": "\u2569",
     "SF410000": "\u2566",
     "SF420000": "\u2560",
     "SF430000": "\u2550",
-    "SF440000": "\u256C",
+    "SF440000": "\u256c",
     "SF450000": "\u2567",
     "SF460000": "\u2568",
     "SF470000": "\u2564",
@@ -619,254 +619,254 @@ def convert_glyphlist(path: str) -> None:
     "SF500000": "\u2558",
     "SF510000": "\u2552",
     "SF520000": "\u2553",
-    "SF530000": "\u256B",
-    "SF540000": "\u256A",
-    "Sacute": "\u015A",
-    "Sacutedotaccent": "\u1E64",
-    "Sampigreek": "\u03E0",
+    "SF530000": "\u256b",
+    "SF540000": "\u256a",
+    "Sacute": "\u015a",
+    "Sacutedotaccent": "\u1e64",
+    "Sampigreek": "\u03e0",
     "Scaron": "\u0160",
-    "Scarondotaccent": "\u1E66",
-    "Scaronsmall": "\uF6FD",
-    "Scedilla": "\u015E",
-    "Schwa": "\u018F",
-    "Schwacyrillic": "\u04D8",
-    "Schwadieresiscyrillic": "\u04DA",
-    "Scircle": "\u24C8",
-    "Scircumflex": "\u015C",
+    "Scarondotaccent": "\u1e66",
+    "Scaronsmall": "\uf6fd",
+    "Scedilla": "\u015e",
+    "Schwa": "\u018f",
+    "Schwacyrillic": "\u04d8",
+    "Schwadieresiscyrillic": "\u04da",
+    "Scircle": "\u24c8",
+    "Scircumflex": "\u015c",
     "Scommaaccent": "\u0218",
-    "Sdotaccent": "\u1E60",
-    "Sdotbelow": "\u1E62",
-    "Sdotbelowdotaccent": "\u1E68",
-    "Seharmenian": "\u054D",
+    "Sdotaccent": "\u1e60",
+    "Sdotbelow": "\u1e62",
+    "Sdotbelowdotaccent": "\u1e68",
+    "Seharmenian": "\u054d",
     "Sevenroman": "\u2166",
     "Shaarmenian": "\u0547",
     "Shacyrillic": "\u0428",
     "Shchacyrillic": "\u0429",
-    "Sheicoptic": "\u03E2",
-    "Shhacyrillic": "\u04BA",
-    "Shimacoptic": "\u03EC",
-    "Sigma": "\u03A3",
+    "Sheicoptic": "\u03e2",
+    "Shhacyrillic": "\u04ba",
+    "Shimacoptic": "\u03ec",
+    "Sigma": "\u03a3",
     "Sixroman": "\u2165",
-    "Smonospace": "\uFF33",
-    "Softsigncyrillic": "\u042C",
-    "Ssmall": "\uF773",
-    "Stigmagreek": "\u03DA",
+    "Smonospace": "\uff33",
+    "Softsigncyrillic": "\u042c",
+    "Ssmall": "\uf773",
+    "Stigmagreek": "\u03da",
     "T": "\u0054",
-    "Tau": "\u03A4",
+    "Tau": "\u03a4",
     "Tbar": "\u0166",
     "Tcaron": "\u0164",
     "Tcedilla": "\u0162",
-    "Tcircle": "\u24C9",
-    "Tcircumflexbelow": "\u1E70",
+    "Tcircle": "\u24c9",
+    "Tcircumflexbelow": "\u1e70",
     "Tcommaaccent": "\u0162",
-    "Tdotaccent": "\u1E6A",
-    "Tdotbelow": "\u1E6C",
+    "Tdotaccent": "\u1e6a",
+    "Tdotbelow": "\u1e6c",
     "Tecyrillic": "\u0422",
-    "Tedescendercyrillic": "\u04AC",
+    "Tedescendercyrillic": "\u04ac",
     "Tenroman": "\u2169",
-    "Tetsecyrillic": "\u04B4",
+    "Tetsecyrillic": "\u04b4",
     "Theta": "\u0398",
-    "Thook": "\u01AC",
-    "Thorn": "\u00DE",
-    "Thornsmall": "\uF7FE",
+    "Thook": "\u01ac",
+    "Thorn": "\u00de",
+    "Thornsmall": "\uf7fe",
     "Threeroman": "\u2162",
-    "Tildesmall": "\uF6FE",
-    "Tiwnarmenian": "\u054F",
-    "Tlinebelow": "\u1E6E",
-    "Tmonospace": "\uFF34",
+    "Tildesmall": "\uf6fe",
+    "Tiwnarmenian": "\u054f",
+    "Tlinebelow": "\u1e6e",
+    "Tmonospace": "\uff34",
     "Toarmenian": "\u0539",
-    "Tonefive": "\u01BC",
+    "Tonefive": "\u01bc",
     "Tonesix": "\u0184",
-    "Tonetwo": "\u01A7",
-    "Tretroflexhook": "\u01AE",
+    "Tonetwo": "\u01a7",
+    "Tretroflexhook": "\u01ae",
     "Tsecyrillic": "\u0426",
-    "Tshecyrillic": "\u040B",
-    "Tsmall": "\uF774",
-    "Twelveroman": "\u216B",
+    "Tshecyrillic": "\u040b",
+    "Tsmall": "\uf774",
+    "Twelveroman": "\u216b",
     "Tworoman": "\u2161",
     "U": "\u0055",
-    "Uacute": "\u00DA",
-    "Uacutesmall": "\uF7FA",
-    "Ubreve": "\u016C",
-    "Ucaron": "\u01D3",
-    "Ucircle": "\u24CA",
-    "Ucircumflex": "\u00DB",
-    "Ucircumflexbelow": "\u1E76",
-    "Ucircumflexsmall": "\uF7FB",
+    "Uacute": "\u00da",
+    "Uacutesmall": "\uf7fa",
+    "Ubreve": "\u016c",
+    "Ucaron": "\u01d3",
+    "Ucircle": "\u24ca",
+    "Ucircumflex": "\u00db",
+    "Ucircumflexbelow": "\u1e76",
+    "Ucircumflexsmall": "\uf7fb",
     "Ucyrillic": "\u0423",
     "Udblacute": "\u0170",
     "Udblgrave": "\u0214",
-    "Udieresis": "\u00DC",
-    "Udieresisacute": "\u01D7",
-    "Udieresisbelow": "\u1E72",
-    "Udieresiscaron": "\u01D9",
-    "Udieresiscyrillic": "\u04F0",
-    "Udieresisgrave": "\u01DB",
-    "Udieresismacron": "\u01D5",
-    "Udieresissmall": "\uF7FC",
-    "Udotbelow": "\u1EE4",
-    "Ugrave": "\u00D9",
-    "Ugravesmall": "\uF7F9",
-    "Uhookabove": "\u1EE6",
-    "Uhorn": "\u01AF",
-    "Uhornacute": "\u1EE8",
-    "Uhorndotbelow": "\u1EF0",
-    "Uhorngrave": "\u1EEA",
-    "Uhornhookabove": "\u1EEC",
-    "Uhorntilde": "\u1EEE",
+    "Udieresis": "\u00dc",
+    "Udieresisacute": "\u01d7",
+    "Udieresisbelow": "\u1e72",
+    "Udieresiscaron": "\u01d9",
+    "Udieresiscyrillic": "\u04f0",
+    "Udieresisgrave": "\u01db",
+    "Udieresismacron": "\u01d5",
+    "Udieresissmall": "\uf7fc",
+    "Udotbelow": "\u1ee4",
+    "Ugrave": "\u00d9",
+    "Ugravesmall": "\uf7f9",
+    "Uhookabove": "\u1ee6",
+    "Uhorn": "\u01af",
+    "Uhornacute": "\u1ee8",
+    "Uhorndotbelow": "\u1ef0",
+    "Uhorngrave": "\u1eea",
+    "Uhornhookabove": "\u1eec",
+    "Uhorntilde": "\u1eee",
     "Uhungarumlaut": "\u0170",
-    "Uhungarumlautcyrillic": "\u04F2",
+    "Uhungarumlautcyrillic": "\u04f2",
     "Uinvertedbreve": "\u0216",
     "Ukcyrillic": "\u0478",
-    "Umacron": "\u016A",
-    "Umacroncyrillic": "\u04EE",
-    "Umacrondieresis": "\u1E7A",
-    "Umonospace": "\uFF35",
+    "Umacron": "\u016a",
+    "Umacroncyrillic": "\u04ee",
+    "Umacrondieresis": "\u1e7a",
+    "Umonospace": "\uff35",
     "Uogonek": "\u0172",
-    "Upsilon": "\u03A5",
-    "Upsilon1": "\u03D2",
-    "Upsilonacutehooksymbolgreek": "\u03D3",
-    "Upsilonafrican": "\u01B1",
-    "Upsilondieresis": "\u03AB",
-    "Upsilondieresishooksymbolgreek": "\u03D4",
-    "Upsilonhooksymbol": "\u03D2",
-    "Upsilontonos": "\u038E",
-    "Uring": "\u016E",
-    "Ushortcyrillic": "\u040E",
-    "Usmall": "\uF775",
-    "Ustraightcyrillic": "\u04AE",
-    "Ustraightstrokecyrillic": "\u04B0",
+    "Upsilon": "\u03a5",
+    "Upsilon1": "\u03d2",
+    "Upsilonacutehooksymbolgreek": "\u03d3",
+    "Upsilonafrican": "\u01b1",
+    "Upsilondieresis": "\u03ab",
+    "Upsilondieresishooksymbolgreek": "\u03d4",
+    "Upsilonhooksymbol": "\u03d2",
+    "Upsilontonos": "\u038e",
+    "Uring": "\u016e",
+    "Ushortcyrillic": "\u040e",
+    "Usmall": "\uf775",
+    "Ustraightcyrillic": "\u04ae",
+    "Ustraightstrokecyrillic": "\u04b0",
     "Utilde": "\u0168",
-    "Utildeacute": "\u1E78",
-    "Utildebelow": "\u1E74",
+    "Utildeacute": "\u1e78",
+    "Utildebelow": "\u1e74",
     "V": "\u0056",
-    "Vcircle": "\u24CB",
-    "Vdotbelow": "\u1E7E",
+    "Vcircle": "\u24cb",
+    "Vdotbelow": "\u1e7e",
     "Vecyrillic": "\u0412",
-    "Vewarmenian": "\u054E",
-    "Vhook": "\u01B2",
-    "Vmonospace": "\uFF36",
+    "Vewarmenian": "\u054e",
+    "Vhook": "\u01b2",
+    "Vmonospace": "\uff36",
     "Voarmenian": "\u0548",
-    "Vsmall": "\uF776",
-    "Vtilde": "\u1E7C",
+    "Vsmall": "\uf776",
+    "Vtilde": "\u1e7c",
     "W": "\u0057",
-    "Wacute": "\u1E82",
-    "Wcircle": "\u24CC",
+    "Wacute": "\u1e82",
+    "Wcircle": "\u24cc",
     "Wcircumflex": "\u0174",
-    "Wdieresis": "\u1E84",
-    "Wdotaccent": "\u1E86",
-    "Wdotbelow": "\u1E88",
-    "Wgrave": "\u1E80",
-    "Wmonospace": "\uFF37",
-    "Wsmall": "\uF777",
+    "Wdieresis": "\u1e84",
+    "Wdotaccent": "\u1e86",
+    "Wdotbelow": "\u1e88",
+    "Wgrave": "\u1e80",
+    "Wmonospace": "\uff37",
+    "Wsmall": "\uf777",
     "X": "\u0058",
-    "Xcircle": "\u24CD",
-    "Xdieresis": "\u1E8C",
-    "Xdotaccent": "\u1E8A",
-    "Xeharmenian": "\u053D",
-    "Xi": "\u039E",
-    "Xmonospace": "\uFF38",
-    "Xsmall": "\uF778",
+    "Xcircle": "\u24cd",
+    "Xdieresis": "\u1e8c",
+    "Xdotaccent": "\u1e8a",
+    "Xeharmenian": "\u053d",
+    "Xi": "\u039e",
+    "Xmonospace": "\uff38",
+    "Xsmall": "\uf778",
     "Y": "\u0059",
-    "Yacute": "\u00DD",
-    "Yacutesmall": "\uF7FD",
+    "Yacute": "\u00dd",
+    "Yacutesmall": "\uf7fd",
     "Yatcyrillic": "\u0462",
-    "Ycircle": "\u24CE",
+    "Ycircle": "\u24ce",
     "Ycircumflex": "\u0176",
     "Ydieresis": "\u0178",
-    "Ydieresissmall": "\uF7FF",
-    "Ydotaccent": "\u1E8E",
-    "Ydotbelow": "\u1EF4",
-    "Yericyrillic": "\u042B",
-    "Yerudieresiscyrillic": "\u04F8",
-    "Ygrave": "\u1EF2",
-    "Yhook": "\u01B3",
-    "Yhookabove": "\u1EF6",
+    "Ydieresissmall": "\uf7ff",
+    "Ydotaccent": "\u1e8e",
+    "Ydotbelow": "\u1ef4",
+    "Yericyrillic": "\u042b",
+    "Yerudieresiscyrillic": "\u04f8",
+    "Ygrave": "\u1ef2",
+    "Yhook": "\u01b3",
+    "Yhookabove": "\u1ef6",
     "Yiarmenian": "\u0545",
     "Yicyrillic": "\u0407",
     "Yiwnarmenian": "\u0552",
-    "Ymonospace": "\uFF39",
-    "Ysmall": "\uF779",
-    "Ytilde": "\u1EF8",
-    "Yusbigcyrillic": "\u046A",
-    "Yusbigiotifiedcyrillic": "\u046C",
+    "Ymonospace": "\uff39",
+    "Ysmall": "\uf779",
+    "Ytilde": "\u1ef8",
+    "Yusbigcyrillic": "\u046a",
+    "Yusbigiotifiedcyrillic": "\u046c",
     "Yuslittlecyrillic": "\u0466",
     "Yuslittleiotifiedcyrillic": "\u0468",
-    "Z": "\u005A",
+    "Z": "\u005a",
     "Zaarmenian": "\u0536",
     "Zacute": "\u0179",
-    "Zcaron": "\u017D",
-    "Zcaronsmall": "\uF6FF",
-    "Zcircle": "\u24CF",
-    "Zcircumflex": "\u1E90",
-    "Zdot": "\u017B",
-    "Zdotaccent": "\u017B",
-    "Zdotbelow": "\u1E92",
+    "Zcaron": "\u017d",
+    "Zcaronsmall": "\uf6ff",
+    "Zcircle": "\u24cf",
+    "Zcircumflex": "\u1e90",
+    "Zdot": "\u017b",
+    "Zdotaccent": "\u017b",
+    "Zdotbelow": "\u1e92",
     "Zecyrillic": "\u0417",
     "Zedescendercyrillic": "\u0498",
-    "Zedieresiscyrillic": "\u04DE",
+    "Zedieresiscyrillic": "\u04de",
     "Zeta": "\u0396",
-    "Zhearmenian": "\u053A",
-    "Zhebrevecyrillic": "\u04C1",
+    "Zhearmenian": "\u053a",
+    "Zhebrevecyrillic": "\u04c1",
     "Zhecyrillic": "\u0416",
     "Zhedescendercyrillic": "\u0496",
-    "Zhedieresiscyrillic": "\u04DC",
-    "Zlinebelow": "\u1E94",
-    "Zmonospace": "\uFF3A",
-    "Zsmall": "\uF77A",
-    "Zstroke": "\u01B5",
+    "Zhedieresiscyrillic": "\u04dc",
+    "Zlinebelow": "\u1e94",
+    "Zmonospace": "\uff3a",
+    "Zsmall": "\uf77a",
+    "Zstroke": "\u01b5",
     "a": "\u0061",
     "aabengali": "\u0986",
-    "aacute": "\u00E1",
+    "aacute": "\u00e1",
     "aadeva": "\u0906",
-    "aagujarati": "\u0A86",
-    "aagurmukhi": "\u0A06",
-    "aamatragurmukhi": "\u0A3E",
+    "aagujarati": "\u0a86",
+    "aagurmukhi": "\u0a06",
+    "aamatragurmukhi": "\u0a3e",
     "aarusquare": "\u3303",
-    "aavowelsignbengali": "\u09BE",
-    "aavowelsigndeva": "\u093E",
-    "aavowelsigngujarati": "\u0ABE",
-    "abbreviationmarkarmenian": "\u055F",
+    "aavowelsignbengali": "\u09be",
+    "aavowelsigndeva": "\u093e",
+    "aavowelsigngujarati": "\u0abe",
+    "abbreviationmarkarmenian": "\u055f",
     "abbreviationsigndeva": "\u0970",
     "abengali": "\u0985",
-    "abopomofo": "\u311A",
+    "abopomofo": "\u311a",
     "abreve": "\u0103",
-    "abreveacute": "\u1EAF",
-    "abrevecyrillic": "\u04D1",
-    "abrevedotbelow": "\u1EB7",
-    "abrevegrave": "\u1EB1",
-    "abrevehookabove": "\u1EB3",
-    "abrevetilde": "\u1EB5",
-    "acaron": "\u01CE",
-    "acircle": "\u24D0",
-    "acircumflex": "\u00E2",
-    "acircumflexacute": "\u1EA5",
-    "acircumflexdotbelow": "\u1EAD",
-    "acircumflexgrave": "\u1EA7",
-    "acircumflexhookabove": "\u1EA9",
-    "acircumflextilde": "\u1EAB",
-    "acute": "\u00B4",
+    "abreveacute": "\u1eaf",
+    "abrevecyrillic": "\u04d1",
+    "abrevedotbelow": "\u1eb7",
+    "abrevegrave": "\u1eb1",
+    "abrevehookabove": "\u1eb3",
+    "abrevetilde": "\u1eb5",
+    "acaron": "\u01ce",
+    "acircle": "\u24d0",
+    "acircumflex": "\u00e2",
+    "acircumflexacute": "\u1ea5",
+    "acircumflexdotbelow": "\u1ead",
+    "acircumflexgrave": "\u1ea7",
+    "acircumflexhookabove": "\u1ea9",
+    "acircumflextilde": "\u1eab",
+    "acute": "\u00b4",
     "acutebelowcmb": "\u0317",
     "acutecmb": "\u0301",
     "acutecomb": "\u0301",
     "acutedeva": "\u0954",
-    "acutelowmod": "\u02CF",
+    "acutelowmod": "\u02cf",
     "acutetonecmb": "\u0341",
     "acyrillic": "\u0430",
     "adblgrave": "\u0201",
-    "addakgurmukhi": "\u0A71",
+    "addakgurmukhi": "\u0a71",
     "adeva": "\u0905",
-    "adieresis": "\u00E4",
-    "adieresiscyrillic": "\u04D3",
-    "adieresismacron": "\u01DF",
-    "adotbelow": "\u1EA1",
-    "adotmacron": "\u01E1",
-    "ae": "\u00E6",
-    "aeacute": "\u01FD",
+    "adieresis": "\u00e4",
+    "adieresiscyrillic": "\u04d3",
+    "adieresismacron": "\u01df",
+    "adotbelow": "\u1ea1",
+    "adotmacron": "\u01e1",
+    "ae": "\u00e6",
+    "aeacute": "\u01fd",
     "aekorean": "\u3150",
-    "aemacron": "\u01E3",
+    "aemacron": "\u01e3",
     "afii00208": "\u2015",
-    "afii08941": "\u20A4",
+    "afii08941": "\u20a4",
     "afii10017": "\u0410",
     "afii10018": "\u0411",
     "afii10019": "\u0412",
@@ -878,12 +878,12 @@ def convert_glyphlist(path: str) -> None:
     "afii10025": "\u0417",
     "afii10026": "\u0418",
     "afii10027": "\u0419",
-    "afii10028": "\u041A",
-    "afii10029": "\u041B",
-    "afii10030": "\u041C",
-    "afii10031": "\u041D",
-    "afii10032": "\u041E",
-    "afii10033": "\u041F",
+    "afii10028": "\u041a",
+    "afii10029": "\u041b",
+    "afii10030": "\u041c",
+    "afii10031": "\u041d",
+    "afii10032": "\u041e",
+    "afii10033": "\u041f",
     "afii10034": "\u0420",
     "afii10035": "\u0421",
     "afii10036": "\u0422",
@@ -894,12 +894,12 @@ def convert_glyphlist(path: str) -> None:
     "afii10041": "\u0427",
     "afii10042": "\u0428",
     "afii10043": "\u0429",
-    "afii10044": "\u042A",
-    "afii10045": "\u042B",
-    "afii10046": "\u042C",
-    "afii10047": "\u042D",
-    "afii10048": "\u042E",
-    "afii10049": "\u042F",
+    "afii10044": "\u042a",
+    "afii10045": "\u042b",
+    "afii10046": "\u042c",
+    "afii10047": "\u042d",
+    "afii10048": "\u042e",
+    "afii10049": "\u042f",
     "afii10050": "\u0490",
     "afii10051": "\u0402",
     "afii10052": "\u0403",
@@ -909,12 +909,12 @@ def convert_glyphlist(path: str) -> None:
     "afii10056": "\u0407",
     "afii10057": "\u0408",
     "afii10058": "\u0409",
-    "afii10059": "\u040A",
-    "afii10060": "\u040B",
-    "afii10061": "\u040C",
-    "afii10062": "\u040E",
-    "afii10063": "\uF6C4",
-    "afii10064": "\uF6C5",
+    "afii10059": "\u040a",
+    "afii10060": "\u040b",
+    "afii10061": "\u040c",
+    "afii10062": "\u040e",
+    "afii10063": "\uf6c4",
+    "afii10064": "\uf6c5",
     "afii10065": "\u0430",
     "afii10066": "\u0431",
     "afii10067": "\u0432",
@@ -926,12 +926,12 @@ def convert_glyphlist(path: str) -> None:
     "afii10073": "\u0437",
     "afii10074": "\u0438",
     "afii10075": "\u0439",
-    "afii10076": "\u043A",
-    "afii10077": "\u043B",
-    "afii10078": "\u043C",
-    "afii10079": "\u043D",
-    "afii10080": "\u043E",
-    "afii10081": "\u043F",
+    "afii10076": "\u043a",
+    "afii10077": "\u043b",
+    "afii10078": "\u043c",
+    "afii10079": "\u043d",
+    "afii10080": "\u043e",
+    "afii10081": "\u043f",
     "afii10082": "\u0440",
     "afii10083": "\u0441",
     "afii10084": "\u0442",
@@ -942,12 +942,12 @@ def convert_glyphlist(path: str) -> None:
     "afii10089": "\u0447",
     "afii10090": "\u0448",
     "afii10091": "\u0449",
-    "afii10092": "\u044A",
-    "afii10093": "\u044B",
-    "afii10094": "\u044C",
-    "afii10095": "\u044D",
-    "afii10096": "\u044E",
-    "afii10097": "\u044F",
+    "afii10092": "\u044a",
+    "afii10093": "\u044b",
+    "afii10094": "\u044c",
+    "afii10095": "\u044d",
+    "afii10096": "\u044e",
+    "afii10097": "\u044f",
     "afii10098": "\u0491",
     "afii10099": "\u0452",
     "afii10100": "\u0453",
@@ -957,27 +957,27 @@ def convert_glyphlist(path: str) -> None:
     "afii10104": "\u0457",
     "afii10105": "\u0458",
     "afii10106": "\u0459",
-    "afii10107": "\u045A",
-    "afii10108": "\u045B",
-    "afii10109": "\u045C",
-    "afii10110": "\u045E",
-    "afii10145": "\u040F",
+    "afii10107": "\u045a",
+    "afii10108": "\u045b",
+    "afii10109": "\u045c",
+    "afii10110": "\u045e",
+    "afii10145": "\u040f",
     "afii10146": "\u0462",
     "afii10147": "\u0472",
     "afii10148": "\u0474",
-    "afii10192": "\uF6C6",
-    "afii10193": "\u045F",
+    "afii10192": "\uf6c6",
+    "afii10193": "\u045f",
     "afii10194": "\u0463",
     "afii10195": "\u0473",
     "afii10196": "\u0475",
-    "afii10831": "\uF6C7",
-    "afii10832": "\uF6C8",
-    "afii10846": "\u04D9",
-    "afii299": "\u200E",
-    "afii300": "\u200F",
-    "afii301": "\u200D",
-    "afii57381": "\u066A",
-    "afii57388": "\u060C",
+    "afii10831": "\uf6c7",
+    "afii10832": "\uf6c8",
+    "afii10846": "\u04d9",
+    "afii299": "\u200e",
+    "afii300": "\u200f",
+    "afii301": "\u200d",
+    "afii57381": "\u066a",
+    "afii57388": "\u060c",
     "afii57392": "\u0660",
     "afii57393": "\u0661",
     "afii57394": "\u0662",
@@ -988,8 +988,8 @@ def convert_glyphlist(path: str) -> None:
     "afii57399": "\u0667",
     "afii57400": "\u0668",
     "afii57401": "\u0669",
-    "afii57403": "\u061B",
-    "afii57407": "\u061F",
+    "afii57403": "\u061b",
+    "afii57407": "\u061f",
     "afii57409": "\u0621",
     "afii57410": "\u0622",
     "afii57411": "\u0623",
@@ -999,12 +999,12 @@ def convert_glyphlist(path: str) -> None:
     "afii57415": "\u0627",
     "afii57416": "\u0628",
     "afii57417": "\u0629",
-    "afii57418": "\u062A",
-    "afii57419": "\u062B",
-    "afii57420": "\u062C",
-    "afii57421": "\u062D",
-    "afii57422": "\u062E",
-    "afii57423": "\u062F",
+    "afii57418": "\u062a",
+    "afii57419": "\u062b",
+    "afii57420": "\u062c",
+    "afii57421": "\u062d",
+    "afii57422": "\u062e",
+    "afii57423": "\u062f",
     "afii57424": "\u0630",
     "afii57425": "\u0631",
     "afii57426": "\u0632",
@@ -1015,7 +1015,7 @@ def convert_glyphlist(path: str) -> None:
     "afii57431": "\u0637",
     "afii57432": "\u0638",
     "afii57433": "\u0639",
-    "afii57434": "\u063A",
+    "afii57434": "\u063a",
     "afii57440": "\u0640",
     "afii57441": "\u0641",
     "afii57442": "\u0642",
@@ -1025,1783 +1025,1783 @@ def convert_glyphlist(path: str) -> None:
     "afii57446": "\u0646",
     "afii57448": "\u0648",
     "afii57449": "\u0649",
-    "afii57450": "\u064A",
-    "afii57451": "\u064B",
-    "afii57452": "\u064C",
-    "afii57453": "\u064D",
-    "afii57454": "\u064E",
-    "afii57455": "\u064F",
+    "afii57450": "\u064a",
+    "afii57451": "\u064b",
+    "afii57452": "\u064c",
+    "afii57453": "\u064d",
+    "afii57454": "\u064e",
+    "afii57455": "\u064f",
     "afii57456": "\u0650",
     "afii57457": "\u0651",
     "afii57458": "\u0652",
     "afii57470": "\u0647",
-    "afii57505": "\u06A4",
-    "afii57506": "\u067E",
+    "afii57505": "\u06a4",
+    "afii57506": "\u067e",
     "afii57507": "\u0686",
     "afii57508": "\u0698",
-    "afii57509": "\u06AF",
+    "afii57509": "\u06af",
     "afii57511": "\u0679",
     "afii57512": "\u0688",
     "afii57513": "\u0691",
-    "afii57514": "\u06BA",
-    "afii57519": "\u06D2",
-    "afii57534": "\u06D5",
-    "afii57636": "\u20AA",
-    "afii57645": "\u05BE",
-    "afii57658": "\u05C3",
-    "afii57664": "\u05D0",
-    "afii57665": "\u05D1",
-    "afii57666": "\u05D2",
-    "afii57667": "\u05D3",
-    "afii57668": "\u05D4",
-    "afii57669": "\u05D5",
-    "afii57670": "\u05D6",
-    "afii57671": "\u05D7",
-    "afii57672": "\u05D8",
-    "afii57673": "\u05D9",
-    "afii57674": "\u05DA",
-    "afii57675": "\u05DB",
-    "afii57676": "\u05DC",
-    "afii57677": "\u05DD",
-    "afii57678": "\u05DE",
-    "afii57679": "\u05DF",
-    "afii57680": "\u05E0",
-    "afii57681": "\u05E1",
-    "afii57682": "\u05E2",
-    "afii57683": "\u05E3",
-    "afii57684": "\u05E4",
-    "afii57685": "\u05E5",
-    "afii57686": "\u05E6",
-    "afii57687": "\u05E7",
-    "afii57688": "\u05E8",
-    "afii57689": "\u05E9",
-    "afii57690": "\u05EA",
-    "afii57694": "\uFB2A",
-    "afii57695": "\uFB2B",
-    "afii57700": "\uFB4B",
-    "afii57705": "\uFB1F",
-    "afii57716": "\u05F0",
-    "afii57717": "\u05F1",
-    "afii57718": "\u05F2",
-    "afii57723": "\uFB35",
-    "afii57793": "\u05B4",
-    "afii57794": "\u05B5",
-    "afii57795": "\u05B6",
-    "afii57796": "\u05BB",
-    "afii57797": "\u05B8",
-    "afii57798": "\u05B7",
-    "afii57799": "\u05B0",
-    "afii57800": "\u05B2",
-    "afii57801": "\u05B1",
-    "afii57802": "\u05B3",
-    "afii57803": "\u05C2",
-    "afii57804": "\u05C1",
-    "afii57806": "\u05B9",
-    "afii57807": "\u05BC",
-    "afii57839": "\u05BD",
-    "afii57841": "\u05BF",
-    "afii57842": "\u05C0",
-    "afii57929": "\u02BC",
+    "afii57514": "\u06ba",
+    "afii57519": "\u06d2",
+    "afii57534": "\u06d5",
+    "afii57636": "\u20aa",
+    "afii57645": "\u05be",
+    "afii57658": "\u05c3",
+    "afii57664": "\u05d0",
+    "afii57665": "\u05d1",
+    "afii57666": "\u05d2",
+    "afii57667": "\u05d3",
+    "afii57668": "\u05d4",
+    "afii57669": "\u05d5",
+    "afii57670": "\u05d6",
+    "afii57671": "\u05d7",
+    "afii57672": "\u05d8",
+    "afii57673": "\u05d9",
+    "afii57674": "\u05da",
+    "afii57675": "\u05db",
+    "afii57676": "\u05dc",
+    "afii57677": "\u05dd",
+    "afii57678": "\u05de",
+    "afii57679": "\u05df",
+    "afii57680": "\u05e0",
+    "afii57681": "\u05e1",
+    "afii57682": "\u05e2",
+    "afii57683": "\u05e3",
+    "afii57684": "\u05e4",
+    "afii57685": "\u05e5",
+    "afii57686": "\u05e6",
+    "afii57687": "\u05e7",
+    "afii57688": "\u05e8",
+    "afii57689": "\u05e9",
+    "afii57690": "\u05ea",
+    "afii57694": "\ufb2a",
+    "afii57695": "\ufb2b",
+    "afii57700": "\ufb4b",
+    "afii57705": "\ufb1f",
+    "afii57716": "\u05f0",
+    "afii57717": "\u05f1",
+    "afii57718": "\u05f2",
+    "afii57723": "\ufb35",
+    "afii57793": "\u05b4",
+    "afii57794": "\u05b5",
+    "afii57795": "\u05b6",
+    "afii57796": "\u05bb",
+    "afii57797": "\u05b8",
+    "afii57798": "\u05b7",
+    "afii57799": "\u05b0",
+    "afii57800": "\u05b2",
+    "afii57801": "\u05b1",
+    "afii57802": "\u05b3",
+    "afii57803": "\u05c2",
+    "afii57804": "\u05c1",
+    "afii57806": "\u05b9",
+    "afii57807": "\u05bc",
+    "afii57839": "\u05bd",
+    "afii57841": "\u05bf",
+    "afii57842": "\u05c0",
+    "afii57929": "\u02bc",
     "afii61248": "\u2105",
     "afii61289": "\u2113",
     "afii61352": "\u2116",
-    "afii61573": "\u202C",
-    "afii61574": "\u202D",
-    "afii61575": "\u202E",
-    "afii61664": "\u200C",
-    "afii63167": "\u066D",
-    "afii64937": "\u02BD",
-    "agrave": "\u00E0",
-    "agujarati": "\u0A85",
-    "agurmukhi": "\u0A05",
+    "afii61573": "\u202c",
+    "afii61574": "\u202d",
+    "afii61575": "\u202e",
+    "afii61664": "\u200c",
+    "afii63167": "\u066d",
+    "afii64937": "\u02bd",
+    "agrave": "\u00e0",
+    "agujarati": "\u0a85",
+    "agurmukhi": "\u0a05",
     "ahiragana": "\u3042",
-    "ahookabove": "\u1EA3",
+    "ahookabove": "\u1ea3",
     "aibengali": "\u0990",
-    "aibopomofo": "\u311E",
+    "aibopomofo": "\u311e",
     "aideva": "\u0910",
-    "aiecyrillic": "\u04D5",
-    "aigujarati": "\u0A90",
-    "aigurmukhi": "\u0A10",
-    "aimatragurmukhi": "\u0A48",
+    "aiecyrillic": "\u04d5",
+    "aigujarati": "\u0a90",
+    "aigurmukhi": "\u0a10",
+    "aimatragurmukhi": "\u0a48",
     "ainarabic": "\u0639",
-    "ainfinalarabic": "\uFECA",
-    "aininitialarabic": "\uFECB",
-    "ainmedialarabic": "\uFECC",
+    "ainfinalarabic": "\ufeca",
+    "aininitialarabic": "\ufecb",
+    "ainmedialarabic": "\ufecc",
     "ainvertedbreve": "\u0203",
-    "aivowelsignbengali": "\u09C8",
+    "aivowelsignbengali": "\u09c8",
     "aivowelsigndeva": "\u0948",
-    "aivowelsigngujarati": "\u0AC8",
-    "akatakana": "\u30A2",
-    "akatakanahalfwidth": "\uFF71",
-    "akorean": "\u314F",
-    "alef": "\u05D0",
+    "aivowelsigngujarati": "\u0ac8",
+    "akatakana": "\u30a2",
+    "akatakanahalfwidth": "\uff71",
+    "akorean": "\u314f",
+    "alef": "\u05d0",
     "alefarabic": "\u0627",
-    "alefdageshhebrew": "\uFB30",
-    "aleffinalarabic": "\uFE8E",
+    "alefdageshhebrew": "\ufb30",
+    "aleffinalarabic": "\ufe8e",
     "alefhamzaabovearabic": "\u0623",
-    "alefhamzaabovefinalarabic": "\uFE84",
+    "alefhamzaabovefinalarabic": "\ufe84",
     "alefhamzabelowarabic": "\u0625",
-    "alefhamzabelowfinalarabic": "\uFE88",
-    "alefhebrew": "\u05D0",
-    "aleflamedhebrew": "\uFB4F",
+    "alefhamzabelowfinalarabic": "\ufe88",
+    "alefhebrew": "\u05d0",
+    "aleflamedhebrew": "\ufb4f",
     "alefmaddaabovearabic": "\u0622",
-    "alefmaddaabovefinalarabic": "\uFE82",
+    "alefmaddaabovefinalarabic": "\ufe82",
     "alefmaksuraarabic": "\u0649",
-    "alefmaksurafinalarabic": "\uFEF0",
-    "alefmaksurainitialarabic": "\uFEF3",
-    "alefmaksuramedialarabic": "\uFEF4",
-    "alefpatahhebrew": "\uFB2E",
-    "alefqamatshebrew": "\uFB2F",
+    "alefmaksurafinalarabic": "\ufef0",
+    "alefmaksurainitialarabic": "\ufef3",
+    "alefmaksuramedialarabic": "\ufef4",
+    "alefpatahhebrew": "\ufb2e",
+    "alefqamatshebrew": "\ufb2f",
     "aleph": "\u2135",
-    "allequal": "\u224C",
-    "alpha": "\u03B1",
-    "alphatonos": "\u03AC",
+    "allequal": "\u224c",
+    "alpha": "\u03b1",
+    "alphatonos": "\u03ac",
     "amacron": "\u0101",
-    "amonospace": "\uFF41",
+    "amonospace": "\uff41",
     "ampersand": "\u0026",
-    "ampersandmonospace": "\uFF06",
-    "ampersandsmall": "\uF726",
-    "amsquare": "\u33C2",
+    "ampersandmonospace": "\uff06",
+    "ampersandsmall": "\uf726",
+    "amsquare": "\u33c2",
     "anbopomofo": "\u3122",
     "angbopomofo": "\u3124",
-    "angkhankhuthai": "\u0E5A",
+    "angkhankhuthai": "\u0e5a",
     "angle": "\u2220",
     "anglebracketleft": "\u3008",
-    "anglebracketleftvertical": "\uFE3F",
+    "anglebracketleftvertical": "\ufe3f",
     "anglebracketright": "\u3009",
-    "anglebracketrightvertical": "\uFE40",
+    "anglebracketrightvertical": "\ufe40",
     "angleleft": "\u2329",
-    "angleright": "\u232A",
-    "angstrom": "\u212B",
+    "angleright": "\u232a",
+    "angstrom": "\u212b",
     "anoteleia": "\u0387",
     "anudattadeva": "\u0952",
     "anusvarabengali": "\u0982",
     "anusvaradeva": "\u0902",
-    "anusvaragujarati": "\u0A82",
+    "anusvaragujarati": "\u0a82",
     "aogonek": "\u0105",
     "apaatosquare": "\u3300",
-    "aparen": "\u249C",
-    "apostrophearmenian": "\u055A",
-    "apostrophemod": "\u02BC",
-    "apple": "\uF8FF",
+    "aparen": "\u249c",
+    "apostrophearmenian": "\u055a",
+    "apostrophemod": "\u02bc",
+    "apple": "\uf8ff",
     "approaches": "\u2250",
     "approxequal": "\u2248",
     "approxequalorimage": "\u2252",
     "approximatelyequal": "\u2245",
-    "araeaekorean": "\u318E",
-    "araeakorean": "\u318D",
+    "araeaekorean": "\u318e",
+    "araeakorean": "\u318d",
     "arc": "\u2312",
-    "arighthalfring": "\u1E9A",
-    "aring": "\u00E5",
-    "aringacute": "\u01FB",
-    "aringbelow": "\u1E01",
+    "arighthalfring": "\u1e9a",
+    "aring": "\u00e5",
+    "aringacute": "\u01fb",
+    "aringbelow": "\u1e01",
     "arrowboth": "\u2194",
-    "arrowdashdown": "\u21E3",
-    "arrowdashleft": "\u21E0",
-    "arrowdashright": "\u21E2",
-    "arrowdashup": "\u21E1",
-    "arrowdblboth": "\u21D4",
-    "arrowdbldown": "\u21D3",
-    "arrowdblleft": "\u21D0",
-    "arrowdblright": "\u21D2",
-    "arrowdblup": "\u21D1",
+    "arrowdashdown": "\u21e3",
+    "arrowdashleft": "\u21e0",
+    "arrowdashright": "\u21e2",
+    "arrowdashup": "\u21e1",
+    "arrowdblboth": "\u21d4",
+    "arrowdbldown": "\u21d3",
+    "arrowdblleft": "\u21d0",
+    "arrowdblright": "\u21d2",
+    "arrowdblup": "\u21d1",
     "arrowdown": "\u2193",
     "arrowdownleft": "\u2199",
     "arrowdownright": "\u2198",
-    "arrowdownwhite": "\u21E9",
-    "arrowheaddownmod": "\u02C5",
-    "arrowheadleftmod": "\u02C2",
-    "arrowheadrightmod": "\u02C3",
-    "arrowheadupmod": "\u02C4",
-    "arrowhorizex": "\uF8E7",
+    "arrowdownwhite": "\u21e9",
+    "arrowheaddownmod": "\u02c5",
+    "arrowheadleftmod": "\u02c2",
+    "arrowheadrightmod": "\u02c3",
+    "arrowheadupmod": "\u02c4",
+    "arrowhorizex": "\uf8e7",
     "arrowleft": "\u2190",
-    "arrowleftdbl": "\u21D0",
-    "arrowleftdblstroke": "\u21CD",
-    "arrowleftoverright": "\u21C6",
-    "arrowleftwhite": "\u21E6",
+    "arrowleftdbl": "\u21d0",
+    "arrowleftdblstroke": "\u21cd",
+    "arrowleftoverright": "\u21c6",
+    "arrowleftwhite": "\u21e6",
     "arrowright": "\u2192",
-    "arrowrightdblstroke": "\u21CF",
-    "arrowrightheavy": "\u279E",
-    "arrowrightoverleft": "\u21C4",
-    "arrowrightwhite": "\u21E8",
-    "arrowtableft": "\u21E4",
-    "arrowtabright": "\u21E5",
+    "arrowrightdblstroke": "\u21cf",
+    "arrowrightheavy": "\u279e",
+    "arrowrightoverleft": "\u21c4",
+    "arrowrightwhite": "\u21e8",
+    "arrowtableft": "\u21e4",
+    "arrowtabright": "\u21e5",
     "arrowup": "\u2191",
     "arrowupdn": "\u2195",
-    "arrowupdnbse": "\u21A8",
-    "arrowupdownbase": "\u21A8",
+    "arrowupdnbse": "\u21a8",
+    "arrowupdownbase": "\u21a8",
     "arrowupleft": "\u2196",
-    "arrowupleftofdown": "\u21C5",
+    "arrowupleftofdown": "\u21c5",
     "arrowupright": "\u2197",
-    "arrowupwhite": "\u21E7",
-    "arrowvertex": "\uF8E6",
-    "asciicircum": "\u005E",
-    "asciicircummonospace": "\uFF3E",
-    "asciitilde": "\u007E",
-    "asciitildemonospace": "\uFF5E",
+    "arrowupwhite": "\u21e7",
+    "arrowvertex": "\uf8e6",
+    "asciicircum": "\u005e",
+    "asciicircummonospace": "\uff3e",
+    "asciitilde": "\u007e",
+    "asciitildemonospace": "\uff5e",
     "ascript": "\u0251",
     "ascriptturned": "\u0252",
     "asmallhiragana": "\u3041",
-    "asmallkatakana": "\u30A1",
-    "asmallkatakanahalfwidth": "\uFF67",
-    "asterisk": "\u002A",
-    "asteriskaltonearabic": "\u066D",
-    "asteriskarabic": "\u066D",
+    "asmallkatakana": "\u30a1",
+    "asmallkatakanahalfwidth": "\uff67",
+    "asterisk": "\u002a",
+    "asteriskaltonearabic": "\u066d",
+    "asteriskarabic": "\u066d",
     "asteriskmath": "\u2217",
-    "asteriskmonospace": "\uFF0A",
-    "asterisksmall": "\uFE61",
+    "asteriskmonospace": "\uff0a",
+    "asterisksmall": "\ufe61",
     "asterism": "\u2042",
-    "asuperior": "\uF6E9",
+    "asuperior": "\uf6e9",
     "asymptoticallyequal": "\u2243",
     "at": "\u0040",
-    "atilde": "\u00E3",
-    "atmonospace": "\uFF20",
-    "atsmall": "\uFE6B",
+    "atilde": "\u00e3",
+    "atmonospace": "\uff20",
+    "atsmall": "\ufe6b",
     "aturned": "\u0250",
     "aubengali": "\u0994",
     "aubopomofo": "\u3120",
     "audeva": "\u0914",
-    "augujarati": "\u0A94",
-    "augurmukhi": "\u0A14",
-    "aulengthmarkbengali": "\u09D7",
-    "aumatragurmukhi": "\u0A4C",
-    "auvowelsignbengali": "\u09CC",
-    "auvowelsigndeva": "\u094C",
-    "auvowelsigngujarati": "\u0ACC",
-    "avagrahadeva": "\u093D",
+    "augujarati": "\u0a94",
+    "augurmukhi": "\u0a14",
+    "aulengthmarkbengali": "\u09d7",
+    "aumatragurmukhi": "\u0a4c",
+    "auvowelsignbengali": "\u09cc",
+    "auvowelsigndeva": "\u094c",
+    "auvowelsigngujarati": "\u0acc",
+    "avagrahadeva": "\u093d",
     "aybarmenian": "\u0561",
-    "ayin": "\u05E2",
-    "ayinaltonehebrew": "\uFB20",
-    "ayinhebrew": "\u05E2",
+    "ayin": "\u05e2",
+    "ayinaltonehebrew": "\ufb20",
+    "ayinhebrew": "\u05e2",
     "b": "\u0062",
-    "babengali": "\u09AC",
-    "backslash": "\u005C",
-    "backslashmonospace": "\uFF3C",
-    "badeva": "\u092C",
-    "bagujarati": "\u0AAC",
-    "bagurmukhi": "\u0A2C",
+    "babengali": "\u09ac",
+    "backslash": "\u005c",
+    "backslashmonospace": "\uff3c",
+    "badeva": "\u092c",
+    "bagujarati": "\u0aac",
+    "bagurmukhi": "\u0a2c",
     "bahiragana": "\u3070",
-    "bahtthai": "\u0E3F",
-    "bakatakana": "\u30D0",
-    "bar": "\u007C",
-    "barmonospace": "\uFF5C",
+    "bahtthai": "\u0e3f",
+    "bakatakana": "\u30d0",
+    "bar": "\u007c",
+    "barmonospace": "\uff5c",
     "bbopomofo": "\u3105",
-    "bcircle": "\u24D1",
-    "bdotaccent": "\u1E03",
-    "bdotbelow": "\u1E05",
-    "beamedsixteenthnotes": "\u266C",
+    "bcircle": "\u24d1",
+    "bdotaccent": "\u1e03",
+    "bdotbelow": "\u1e05",
+    "beamedsixteenthnotes": "\u266c",
     "because": "\u2235",
     "becyrillic": "\u0431",
     "beharabic": "\u0628",
-    "behfinalarabic": "\uFE90",
-    "behinitialarabic": "\uFE91",
+    "behfinalarabic": "\ufe90",
+    "behinitialarabic": "\ufe91",
     "behiragana": "\u3079",
-    "behmedialarabic": "\uFE92",
-    "behmeeminitialarabic": "\uFC9F",
-    "behmeemisolatedarabic": "\uFC08",
-    "behnoonfinalarabic": "\uFC6D",
-    "bekatakana": "\u30D9",
+    "behmedialarabic": "\ufe92",
+    "behmeeminitialarabic": "\ufc9f",
+    "behmeemisolatedarabic": "\ufc08",
+    "behnoonfinalarabic": "\ufc6d",
+    "bekatakana": "\u30d9",
     "benarmenian": "\u0562",
-    "bet": "\u05D1",
-    "beta": "\u03B2",
-    "betasymbolgreek": "\u03D0",
-    "betdagesh": "\uFB31",
-    "betdageshhebrew": "\uFB31",
-    "bethebrew": "\u05D1",
-    "betrafehebrew": "\uFB4C",
-    "bhabengali": "\u09AD",
-    "bhadeva": "\u092D",
-    "bhagujarati": "\u0AAD",
-    "bhagurmukhi": "\u0A2D",
+    "bet": "\u05d1",
+    "beta": "\u03b2",
+    "betasymbolgreek": "\u03d0",
+    "betdagesh": "\ufb31",
+    "betdageshhebrew": "\ufb31",
+    "bethebrew": "\u05d1",
+    "betrafehebrew": "\ufb4c",
+    "bhabengali": "\u09ad",
+    "bhadeva": "\u092d",
+    "bhagujarati": "\u0aad",
+    "bhagurmukhi": "\u0a2d",
     "bhook": "\u0253",
     "bihiragana": "\u3073",
-    "bikatakana": "\u30D3",
+    "bikatakana": "\u30d3",
     "bilabialclick": "\u0298",
-    "bindigurmukhi": "\u0A02",
+    "bindigurmukhi": "\u0a02",
     "birusquare": "\u3331",
-    "blackcircle": "\u25CF",
-    "blackdiamond": "\u25C6",
-    "blackdownpointingtriangle": "\u25BC",
-    "blackleftpointingpointer": "\u25C4",
-    "blackleftpointingtriangle": "\u25C0",
+    "blackcircle": "\u25cf",
+    "blackdiamond": "\u25c6",
+    "blackdownpointingtriangle": "\u25bc",
+    "blackleftpointingpointer": "\u25c4",
+    "blackleftpointingtriangle": "\u25c0",
     "blacklenticularbracketleft": "\u3010",
-    "blacklenticularbracketleftvertical": "\uFE3B",
+    "blacklenticularbracketleftvertical": "\ufe3b",
     "blacklenticularbracketright": "\u3011",
-    "blacklenticularbracketrightvertical": "\uFE3C",
-    "blacklowerlefttriangle": "\u25E3",
-    "blacklowerrighttriangle": "\u25E2",
-    "blackrectangle": "\u25AC",
-    "blackrightpointingpointer": "\u25BA",
-    "blackrightpointingtriangle": "\u25B6",
-    "blacksmallsquare": "\u25AA",
-    "blacksmilingface": "\u263B",
-    "blacksquare": "\u25A0",
+    "blacklenticularbracketrightvertical": "\ufe3c",
+    "blacklowerlefttriangle": "\u25e3",
+    "blacklowerrighttriangle": "\u25e2",
+    "blackrectangle": "\u25ac",
+    "blackrightpointingpointer": "\u25ba",
+    "blackrightpointingtriangle": "\u25b6",
+    "blacksmallsquare": "\u25aa",
+    "blacksmilingface": "\u263b",
+    "blacksquare": "\u25a0",
     "blackstar": "\u2605",
-    "blackupperlefttriangle": "\u25E4",
-    "blackupperrighttriangle": "\u25E5",
-    "blackuppointingsmalltriangle": "\u25B4",
-    "blackuppointingtriangle": "\u25B2",
+    "blackupperlefttriangle": "\u25e4",
+    "blackupperrighttriangle": "\u25e5",
+    "blackuppointingsmalltriangle": "\u25b4",
+    "blackuppointingtriangle": "\u25b2",
     "blank": "\u2423",
-    "blinebelow": "\u1E07",
+    "blinebelow": "\u1e07",
     "block": "\u2588",
-    "bmonospace": "\uFF42",
-    "bobaimaithai": "\u0E1A",
-    "bohiragana": "\u307C",
-    "bokatakana": "\u30DC",
-    "bparen": "\u249D",
-    "bqsquare": "\u33C3",
-    "braceex": "\uF8F4",
-    "braceleft": "\u007B",
-    "braceleftbt": "\uF8F3",
-    "braceleftmid": "\uF8F2",
-    "braceleftmonospace": "\uFF5B",
-    "braceleftsmall": "\uFE5B",
-    "bracelefttp": "\uF8F1",
-    "braceleftvertical": "\uFE37",
-    "braceright": "\u007D",
-    "bracerightbt": "\uF8FE",
-    "bracerightmid": "\uF8FD",
-    "bracerightmonospace": "\uFF5D",
-    "bracerightsmall": "\uFE5C",
-    "bracerighttp": "\uF8FC",
-    "bracerightvertical": "\uFE38",
-    "bracketleft": "\u005B",
-    "bracketleftbt": "\uF8F0",
-    "bracketleftex": "\uF8EF",
-    "bracketleftmonospace": "\uFF3B",
-    "bracketlefttp": "\uF8EE",
-    "bracketright": "\u005D",
-    "bracketrightbt": "\uF8FB",
-    "bracketrightex": "\uF8FA",
-    "bracketrightmonospace": "\uFF3D",
-    "bracketrighttp": "\uF8F9",
-    "breve": "\u02D8",
-    "brevebelowcmb": "\u032E",
+    "bmonospace": "\uff42",
+    "bobaimaithai": "\u0e1a",
+    "bohiragana": "\u307c",
+    "bokatakana": "\u30dc",
+    "bparen": "\u249d",
+    "bqsquare": "\u33c3",
+    "braceex": "\uf8f4",
+    "braceleft": "\u007b",
+    "braceleftbt": "\uf8f3",
+    "braceleftmid": "\uf8f2",
+    "braceleftmonospace": "\uff5b",
+    "braceleftsmall": "\ufe5b",
+    "bracelefttp": "\uf8f1",
+    "braceleftvertical": "\ufe37",
+    "braceright": "\u007d",
+    "bracerightbt": "\uf8fe",
+    "bracerightmid": "\uf8fd",
+    "bracerightmonospace": "\uff5d",
+    "bracerightsmall": "\ufe5c",
+    "bracerighttp": "\uf8fc",
+    "bracerightvertical": "\ufe38",
+    "bracketleft": "\u005b",
+    "bracketleftbt": "\uf8f0",
+    "bracketleftex": "\uf8ef",
+    "bracketleftmonospace": "\uff3b",
+    "bracketlefttp": "\uf8ee",
+    "bracketright": "\u005d",
+    "bracketrightbt": "\uf8fb",
+    "bracketrightex": "\uf8fa",
+    "bracketrightmonospace": "\uff3d",
+    "bracketrighttp": "\uf8f9",
+    "breve": "\u02d8",
+    "brevebelowcmb": "\u032e",
     "brevecmb": "\u0306",
-    "breveinvertedbelowcmb": "\u032F",
+    "breveinvertedbelowcmb": "\u032f",
     "breveinvertedcmb": "\u0311",
     "breveinverteddoublecmb": "\u0361",
-    "bridgebelowcmb": "\u032A",
-    "bridgeinvertedbelowcmb": "\u033A",
-    "brokenbar": "\u00A6",
+    "bridgebelowcmb": "\u032a",
+    "bridgeinvertedbelowcmb": "\u033a",
+    "brokenbar": "\u00a6",
     "bstroke": "\u0180",
-    "bsuperior": "\uF6EA",
+    "bsuperior": "\uf6ea",
     "btopbar": "\u0183",
     "buhiragana": "\u3076",
-    "bukatakana": "\u30D6",
+    "bukatakana": "\u30d6",
     "bullet": "\u2022",
-    "bulletinverse": "\u25D8",
+    "bulletinverse": "\u25d8",
     "bulletoperator": "\u2219",
-    "bullseye": "\u25CE",
+    "bullseye": "\u25ce",
     "c": "\u0063",
-    "caarmenian": "\u056E",
-    "cabengali": "\u099A",
+    "caarmenian": "\u056e",
+    "cabengali": "\u099a",
     "cacute": "\u0107",
-    "cadeva": "\u091A",
-    "cagujarati": "\u0A9A",
-    "cagurmukhi": "\u0A1A",
+    "cadeva": "\u091a",
+    "cagujarati": "\u0a9a",
+    "cagurmukhi": "\u0a1a",
     "calsquare": "\u3388",
     "candrabindubengali": "\u0981",
     "candrabinducmb": "\u0310",
     "candrabindudeva": "\u0901",
-    "candrabindugujarati": "\u0A81",
-    "capslock": "\u21EA",
+    "candrabindugujarati": "\u0a81",
+    "capslock": "\u21ea",
     "careof": "\u2105",
-    "caron": "\u02C7",
-    "caronbelowcmb": "\u032C",
-    "caroncmb": "\u030C",
-    "carriagereturn": "\u21B5",
+    "caron": "\u02c7",
+    "caronbelowcmb": "\u032c",
+    "caroncmb": "\u030c",
+    "carriagereturn": "\u21b5",
     "cbopomofo": "\u3118",
-    "ccaron": "\u010D",
-    "ccedilla": "\u00E7",
-    "ccedillaacute": "\u1E09",
-    "ccircle": "\u24D2",
+    "ccaron": "\u010d",
+    "ccedilla": "\u00e7",
+    "ccedillaacute": "\u1e09",
+    "ccircle": "\u24d2",
     "ccircumflex": "\u0109",
     "ccurl": "\u0255",
-    "cdot": "\u010B",
-    "cdotaccent": "\u010B",
-    "cdsquare": "\u33C5",
-    "cedilla": "\u00B8",
+    "cdot": "\u010b",
+    "cdotaccent": "\u010b",
+    "cdsquare": "\u33c5",
+    "cedilla": "\u00b8",
     "cedillacmb": "\u0327",
-    "cent": "\u00A2",
+    "cent": "\u00a2",
     "centigrade": "\u2103",
-    "centinferior": "\uF6DF",
-    "centmonospace": "\uFFE0",
-    "centoldstyle": "\uF7A2",
-    "centsuperior": "\uF6E0",
+    "centinferior": "\uf6df",
+    "centmonospace": "\uffe0",
+    "centoldstyle": "\uf7a2",
+    "centsuperior": "\uf6e0",
     "chaarmenian": "\u0579",
-    "chabengali": "\u099B",
-    "chadeva": "\u091B",
-    "chagujarati": "\u0A9B",
-    "chagurmukhi": "\u0A1B",
+    "chabengali": "\u099b",
+    "chadeva": "\u091b",
+    "chagujarati": "\u0a9b",
+    "chagurmukhi": "\u0a1b",
     "chbopomofo": "\u3114",
-    "cheabkhasiancyrillic": "\u04BD",
+    "cheabkhasiancyrillic": "\u04bd",
     "checkmark": "\u2713",
     "checyrillic": "\u0447",
-    "chedescenderabkhasiancyrillic": "\u04BF",
-    "chedescendercyrillic": "\u04B7",
-    "chedieresiscyrillic": "\u04F5",
+    "chedescenderabkhasiancyrillic": "\u04bf",
+    "chedescendercyrillic": "\u04b7",
+    "chedieresiscyrillic": "\u04f5",
     "cheharmenian": "\u0573",
-    "chekhakassiancyrillic": "\u04CC",
-    "cheverticalstrokecyrillic": "\u04B9",
-    "chi": "\u03C7",
+    "chekhakassiancyrillic": "\u04cc",
+    "cheverticalstrokecyrillic": "\u04b9",
+    "chi": "\u03c7",
     "chieuchacirclekorean": "\u3277",
     "chieuchaparenkorean": "\u3217",
     "chieuchcirclekorean": "\u3269",
-    "chieuchkorean": "\u314A",
+    "chieuchkorean": "\u314a",
     "chieuchparenkorean": "\u3209",
-    "chochangthai": "\u0E0A",
-    "chochanthai": "\u0E08",
-    "chochingthai": "\u0E09",
-    "chochoethai": "\u0E0C",
+    "chochangthai": "\u0e0a",
+    "chochanthai": "\u0e08",
+    "chochingthai": "\u0e09",
+    "chochoethai": "\u0e0c",
     "chook": "\u0188",
     "cieucacirclekorean": "\u3276",
     "cieucaparenkorean": "\u3216",
     "cieuccirclekorean": "\u3268",
     "cieuckorean": "\u3148",
     "cieucparenkorean": "\u3208",
-    "cieucuparenkorean": "\u321C",
-    "circle": "\u25CB",
+    "cieucuparenkorean": "\u321c",
+    "circle": "\u25cb",
     "circlemultiply": "\u2297",
     "circleot": "\u2299",
     "circleplus": "\u2295",
     "circlepostalmark": "\u3036",
-    "circlewithlefthalfblack": "\u25D0",
-    "circlewithrighthalfblack": "\u25D1",
-    "circumflex": "\u02C6",
-    "circumflexbelowcmb": "\u032D",
+    "circlewithlefthalfblack": "\u25d0",
+    "circlewithrighthalfblack": "\u25d1",
+    "circumflex": "\u02c6",
+    "circumflexbelowcmb": "\u032d",
     "circumflexcmb": "\u0302",
     "clear": "\u2327",
-    "clickalveolar": "\u01C2",
-    "clickdental": "\u01C0",
-    "clicklateral": "\u01C1",
-    "clickretroflex": "\u01C3",
+    "clickalveolar": "\u01c2",
+    "clickdental": "\u01c0",
+    "clicklateral": "\u01c1",
+    "clickretroflex": "\u01c3",
     "club": "\u2663",
     "clubsuitblack": "\u2663",
     "clubsuitwhite": "\u2667",
-    "cmcubedsquare": "\u33A4",
-    "cmonospace": "\uFF43",
-    "cmsquaredsquare": "\u33A0",
+    "cmcubedsquare": "\u33a4",
+    "cmonospace": "\uff43",
+    "cmsquaredsquare": "\u33a0",
     "coarmenian": "\u0581",
-    "colon": "\u003A",
-    "colonmonetary": "\u20A1",
-    "colonmonospace": "\uFF1A",
-    "colonsign": "\u20A1",
-    "colonsmall": "\uFE55",
-    "colontriangularhalfmod": "\u02D1",
-    "colontriangularmod": "\u02D0",
-    "comma": "\u002C",
+    "colon": "\u003a",
+    "colonmonetary": "\u20a1",
+    "colonmonospace": "\uff1a",
+    "colonsign": "\u20a1",
+    "colonsmall": "\ufe55",
+    "colontriangularhalfmod": "\u02d1",
+    "colontriangularmod": "\u02d0",
+    "comma": "\u002c",
     "commaabovecmb": "\u0313",
     "commaaboverightcmb": "\u0315",
-    "commaaccent": "\uF6C3",
-    "commaarabic": "\u060C",
-    "commaarmenian": "\u055D",
-    "commainferior": "\uF6E1",
-    "commamonospace": "\uFF0C",
+    "commaaccent": "\uf6c3",
+    "commaarabic": "\u060c",
+    "commaarmenian": "\u055d",
+    "commainferior": "\uf6e1",
+    "commamonospace": "\uff0c",
     "commareversedabovecmb": "\u0314",
-    "commareversedmod": "\u02BD",
-    "commasmall": "\uFE50",
-    "commasuperior": "\uF6E2",
+    "commareversedmod": "\u02bd",
+    "commasmall": "\ufe50",
+    "commasuperior": "\uf6e2",
     "commaturnedabovecmb": "\u0312",
-    "commaturnedmod": "\u02BB",
-    "compass": "\u263C",
+    "commaturnedmod": "\u02bb",
+    "compass": "\u263c",
     "congruent": "\u2245",
-    "contourintegral": "\u222E",
+    "contourintegral": "\u222e",
     "control": "\u2303",
     "controlACK": "\u0006",
     "controlBEL": "\u0007",
     "controlBS": "\u0008",
     "controlCAN": "\u0018",
-    "controlCR": "\u000D",
+    "controlCR": "\u000d",
     "controlDC1": "\u0011",
     "controlDC2": "\u0012",
     "controlDC3": "\u0013",
     "controlDC4": "\u0014",
-    "controlDEL": "\u007F",
+    "controlDEL": "\u007f",
     "controlDLE": "\u0010",
     "controlEM": "\u0019",
     "controlENQ": "\u0005",
     "controlEOT": "\u0004",
-    "controlESC": "\u001B",
+    "controlESC": "\u001b",
     "controlETB": "\u0017",
     "controlETX": "\u0003",
-    "controlFF": "\u000C",
-    "controlFS": "\u001C",
-    "controlGS": "\u001D",
+    "controlFF": "\u000c",
+    "controlFS": "\u001c",
+    "controlGS": "\u001d",
     "controlHT": "\u0009",
-    "controlLF": "\u000A",
+    "controlLF": "\u000a",
     "controlNAK": "\u0015",
-    "controlRS": "\u001E",
-    "controlSI": "\u000F",
-    "controlSO": "\u000E",
+    "controlRS": "\u001e",
+    "controlSI": "\u000f",
+    "controlSO": "\u000e",
     "controlSOT": "\u0002",
     "controlSTX": "\u0001",
-    "controlSUB": "\u001A",
+    "controlSUB": "\u001a",
     "controlSYN": "\u0016",
-    "controlUS": "\u001F",
-    "controlVT": "\u000B",
-    "copyright": "\u00A9",
-    "copyrightsans": "\uF8E9",
-    "copyrightserif": "\uF6D9",
-    "cornerbracketleft": "\u300C",
-    "cornerbracketlefthalfwidth": "\uFF62",
-    "cornerbracketleftvertical": "\uFE41",
-    "cornerbracketright": "\u300D",
-    "cornerbracketrighthalfwidth": "\uFF63",
-    "cornerbracketrightvertical": "\uFE42",
-    "corporationsquare": "\u337F",
-    "cosquare": "\u33C7",
-    "coverkgsquare": "\u33C6",
-    "cparen": "\u249E",
-    "cruzeiro": "\u20A2",
+    "controlUS": "\u001f",
+    "controlVT": "\u000b",
+    "copyright": "\u00a9",
+    "copyrightsans": "\uf8e9",
+    "copyrightserif": "\uf6d9",
+    "cornerbracketleft": "\u300c",
+    "cornerbracketlefthalfwidth": "\uff62",
+    "cornerbracketleftvertical": "\ufe41",
+    "cornerbracketright": "\u300d",
+    "cornerbracketrighthalfwidth": "\uff63",
+    "cornerbracketrightvertical": "\ufe42",
+    "corporationsquare": "\u337f",
+    "cosquare": "\u33c7",
+    "coverkgsquare": "\u33c6",
+    "cparen": "\u249e",
+    "cruzeiro": "\u20a2",
     "cstretched": "\u0297",
-    "curlyand": "\u22CF",
-    "curlyor": "\u22CE",
-    "currency": "\u00A4",
-    "cyrBreve": "\uF6D1",
-    "cyrFlex": "\uF6D2",
-    "cyrbreve": "\uF6D4",
-    "cyrflex": "\uF6D5",
+    "curlyand": "\u22cf",
+    "curlyor": "\u22ce",
+    "currency": "\u00a4",
+    "cyrBreve": "\uf6d1",
+    "cyrFlex": "\uf6d2",
+    "cyrbreve": "\uf6d4",
+    "cyrflex": "\uf6d5",
     "d": "\u0064",
     "daarmenian": "\u0564",
-    "dabengali": "\u09A6",
+    "dabengali": "\u09a6",
     "dadarabic": "\u0636",
     "dadeva": "\u0926",
-    "dadfinalarabic": "\uFEBE",
-    "dadinitialarabic": "\uFEBF",
-    "dadmedialarabic": "\uFEC0",
-    "dagesh": "\u05BC",
-    "dageshhebrew": "\u05BC",
+    "dadfinalarabic": "\ufebe",
+    "dadinitialarabic": "\ufebf",
+    "dadmedialarabic": "\ufec0",
+    "dagesh": "\u05bc",
+    "dageshhebrew": "\u05bc",
     "dagger": "\u2020",
     "daggerdbl": "\u2021",
-    "dagujarati": "\u0AA6",
-    "dagurmukhi": "\u0A26",
+    "dagujarati": "\u0aa6",
+    "dagurmukhi": "\u0a26",
     "dahiragana": "\u3060",
-    "dakatakana": "\u30C0",
-    "dalarabic": "\u062F",
-    "dalet": "\u05D3",
-    "daletdagesh": "\uFB33",
-    "daletdageshhebrew": "\uFB33",
-    "dalethatafpatah": "\u05D3\u05B2",
-    "dalethatafpatahhebrew": "\u05D3\u05B2",
-    "dalethatafsegol": "\u05D3\u05B1",
-    "dalethatafsegolhebrew": "\u05D3\u05B1",
-    "dalethebrew": "\u05D3",
-    "dalethiriq": "\u05D3\u05B4",
-    "dalethiriqhebrew": "\u05D3\u05B4",
-    "daletholam": "\u05D3\u05B9",
-    "daletholamhebrew": "\u05D3\u05B9",
-    "daletpatah": "\u05D3\u05B7",
-    "daletpatahhebrew": "\u05D3\u05B7",
-    "daletqamats": "\u05D3\u05B8",
-    "daletqamatshebrew": "\u05D3\u05B8",
-    "daletqubuts": "\u05D3\u05BB",
-    "daletqubutshebrew": "\u05D3\u05BB",
-    "daletsegol": "\u05D3\u05B6",
-    "daletsegolhebrew": "\u05D3\u05B6",
-    "daletsheva": "\u05D3\u05B0",
-    "daletshevahebrew": "\u05D3\u05B0",
-    "dalettsere": "\u05D3\u05B5",
-    "dalettserehebrew": "\u05D3\u05B5",
-    "dalfinalarabic": "\uFEAA",
-    "dammaarabic": "\u064F",
-    "dammalowarabic": "\u064F",
-    "dammatanaltonearabic": "\u064C",
-    "dammatanarabic": "\u064C",
+    "dakatakana": "\u30c0",
+    "dalarabic": "\u062f",
+    "dalet": "\u05d3",
+    "daletdagesh": "\ufb33",
+    "daletdageshhebrew": "\ufb33",
+    "dalethatafpatah": "\u05d3\u05b2",
+    "dalethatafpatahhebrew": "\u05d3\u05b2",
+    "dalethatafsegol": "\u05d3\u05b1",
+    "dalethatafsegolhebrew": "\u05d3\u05b1",
+    "dalethebrew": "\u05d3",
+    "dalethiriq": "\u05d3\u05b4",
+    "dalethiriqhebrew": "\u05d3\u05b4",
+    "daletholam": "\u05d3\u05b9",
+    "daletholamhebrew": "\u05d3\u05b9",
+    "daletpatah": "\u05d3\u05b7",
+    "daletpatahhebrew": "\u05d3\u05b7",
+    "daletqamats": "\u05d3\u05b8",
+    "daletqamatshebrew": "\u05d3\u05b8",
+    "daletqubuts": "\u05d3\u05bb",
+    "daletqubutshebrew": "\u05d3\u05bb",
+    "daletsegol": "\u05d3\u05b6",
+    "daletsegolhebrew": "\u05d3\u05b6",
+    "daletsheva": "\u05d3\u05b0",
+    "daletshevahebrew": "\u05d3\u05b0",
+    "dalettsere": "\u05d3\u05b5",
+    "dalettserehebrew": "\u05d3\u05b5",
+    "dalfinalarabic": "\ufeaa",
+    "dammaarabic": "\u064f",
+    "dammalowarabic": "\u064f",
+    "dammatanaltonearabic": "\u064c",
+    "dammatanarabic": "\u064c",
     "danda": "\u0964",
-    "dargahebrew": "\u05A7",
-    "dargalefthebrew": "\u05A7",
+    "dargahebrew": "\u05a7",
+    "dargalefthebrew": "\u05a7",
     "dasiapneumatacyrilliccmb": "\u0485",
-    "dblGrave": "\uF6D3",
-    "dblanglebracketleft": "\u300A",
-    "dblanglebracketleftvertical": "\uFE3D",
-    "dblanglebracketright": "\u300B",
-    "dblanglebracketrightvertical": "\uFE3E",
-    "dblarchinvertedbelowcmb": "\u032B",
-    "dblarrowleft": "\u21D4",
-    "dblarrowright": "\u21D2",
+    "dblGrave": "\uf6d3",
+    "dblanglebracketleft": "\u300a",
+    "dblanglebracketleftvertical": "\ufe3d",
+    "dblanglebracketright": "\u300b",
+    "dblanglebracketrightvertical": "\ufe3e",
+    "dblarchinvertedbelowcmb": "\u032b",
+    "dblarrowleft": "\u21d4",
+    "dblarrowright": "\u21d2",
     "dbldanda": "\u0965",
-    "dblgrave": "\uF6D6",
-    "dblgravecmb": "\u030F",
-    "dblintegral": "\u222C",
+    "dblgrave": "\uf6d6",
+    "dblgravecmb": "\u030f",
+    "dblintegral": "\u222c",
     "dbllowline": "\u2017",
     "dbllowlinecmb": "\u0333",
-    "dbloverlinecmb": "\u033F",
-    "dblprimemod": "\u02BA",
+    "dbloverlinecmb": "\u033f",
+    "dblprimemod": "\u02ba",
     "dblverticalbar": "\u2016",
-    "dblverticallineabovecmb": "\u030E",
+    "dblverticallineabovecmb": "\u030e",
     "dbopomofo": "\u3109",
-    "dbsquare": "\u33C8",
-    "dcaron": "\u010F",
-    "dcedilla": "\u1E11",
-    "dcircle": "\u24D3",
-    "dcircumflexbelow": "\u1E13",
+    "dbsquare": "\u33c8",
+    "dcaron": "\u010f",
+    "dcedilla": "\u1e11",
+    "dcircle": "\u24d3",
+    "dcircumflexbelow": "\u1e13",
     "dcroat": "\u0111",
-    "ddabengali": "\u09A1",
+    "ddabengali": "\u09a1",
     "ddadeva": "\u0921",
-    "ddagujarati": "\u0AA1",
-    "ddagurmukhi": "\u0A21",
+    "ddagujarati": "\u0aa1",
+    "ddagurmukhi": "\u0a21",
     "ddalarabic": "\u0688",
-    "ddalfinalarabic": "\uFB89",
-    "dddhadeva": "\u095C",
-    "ddhabengali": "\u09A2",
+    "ddalfinalarabic": "\ufb89",
+    "dddhadeva": "\u095c",
+    "ddhabengali": "\u09a2",
     "ddhadeva": "\u0922",
-    "ddhagujarati": "\u0AA2",
-    "ddhagurmukhi": "\u0A22",
-    "ddotaccent": "\u1E0B",
-    "ddotbelow": "\u1E0D",
-    "decimalseparatorarabic": "\u066B",
-    "decimalseparatorpersian": "\u066B",
+    "ddhagujarati": "\u0aa2",
+    "ddhagurmukhi": "\u0a22",
+    "ddotaccent": "\u1e0b",
+    "ddotbelow": "\u1e0d",
+    "decimalseparatorarabic": "\u066b",
+    "decimalseparatorpersian": "\u066b",
     "decyrillic": "\u0434",
-    "degree": "\u00B0",
-    "dehihebrew": "\u05AD",
+    "degree": "\u00b0",
+    "dehihebrew": "\u05ad",
     "dehiragana": "\u3067",
-    "deicoptic": "\u03EF",
-    "dekatakana": "\u30C7",
-    "deleteleft": "\u232B",
+    "deicoptic": "\u03ef",
+    "dekatakana": "\u30c7",
+    "deleteleft": "\u232b",
     "deleteright": "\u2326",
-    "delta": "\u03B4",
-    "deltaturned": "\u018D",
-    "denominatorminusonenumeratorbengali": "\u09F8",
-    "dezh": "\u02A4",
-    "dhabengali": "\u09A7",
+    "delta": "\u03b4",
+    "deltaturned": "\u018d",
+    "denominatorminusonenumeratorbengali": "\u09f8",
+    "dezh": "\u02a4",
+    "dhabengali": "\u09a7",
     "dhadeva": "\u0927",
-    "dhagujarati": "\u0AA7",
-    "dhagurmukhi": "\u0A27",
+    "dhagujarati": "\u0aa7",
+    "dhagurmukhi": "\u0a27",
     "dhook": "\u0257",
     "dialytikatonos": "\u0385",
     "dialytikatonoscmb": "\u0344",
     "diamond": "\u2666",
     "diamondsuitwhite": "\u2662",
-    "dieresis": "\u00A8",
-    "dieresisacute": "\uF6D7",
+    "dieresis": "\u00a8",
+    "dieresisacute": "\uf6d7",
     "dieresisbelowcmb": "\u0324",
     "dieresiscmb": "\u0308",
-    "dieresisgrave": "\uF6D8",
+    "dieresisgrave": "\uf6d8",
     "dieresistonos": "\u0385",
     "dihiragana": "\u3062",
-    "dikatakana": "\u30C2",
+    "dikatakana": "\u30c2",
     "dittomark": "\u3003",
-    "divide": "\u00F7",
+    "divide": "\u00f7",
     "divides": "\u2223",
     "divisionslash": "\u2215",
     "djecyrillic": "\u0452",
     "dkshade": "\u2593",
-    "dlinebelow": "\u1E0F",
+    "dlinebelow": "\u1e0f",
     "dlsquare": "\u3397",
     "dmacron": "\u0111",
-    "dmonospace": "\uFF44",
+    "dmonospace": "\uff44",
     "dnblock": "\u2584",
-    "dochadathai": "\u0E0E",
-    "dodekthai": "\u0E14",
+    "dochadathai": "\u0e0e",
+    "dodekthai": "\u0e14",
     "dohiragana": "\u3069",
-    "dokatakana": "\u30C9",
+    "dokatakana": "\u30c9",
     "dollar": "\u0024",
-    "dollarinferior": "\uF6E3",
-    "dollarmonospace": "\uFF04",
-    "dollaroldstyle": "\uF724",
-    "dollarsmall": "\uFE69",
-    "dollarsuperior": "\uF6E4",
-    "dong": "\u20AB",
+    "dollarinferior": "\uf6e3",
+    "dollarmonospace": "\uff04",
+    "dollaroldstyle": "\uf724",
+    "dollarsmall": "\ufe69",
+    "dollarsuperior": "\uf6e4",
+    "dong": "\u20ab",
     "dorusquare": "\u3326",
-    "dotaccent": "\u02D9",
+    "dotaccent": "\u02d9",
     "dotaccentcmb": "\u0307",
     "dotbelowcmb": "\u0323",
     "dotbelowcomb": "\u0323",
-    "dotkatakana": "\u30FB",
+    "dotkatakana": "\u30fb",
     "dotlessi": "\u0131",
-    "dotlessj": "\uF6BE",
+    "dotlessj": "\uf6be",
     "dotlessjstrokehook": "\u0284",
-    "dotmath": "\u22C5",
-    "dottedcircle": "\u25CC",
-    "doubleyodpatah": "\uFB1F",
-    "doubleyodpatahhebrew": "\uFB1F",
-    "downtackbelowcmb": "\u031E",
-    "downtackmod": "\u02D5",
-    "dparen": "\u249F",
-    "dsuperior": "\uF6EB",
+    "dotmath": "\u22c5",
+    "dottedcircle": "\u25cc",
+    "doubleyodpatah": "\ufb1f",
+    "doubleyodpatahhebrew": "\ufb1f",
+    "downtackbelowcmb": "\u031e",
+    "downtackmod": "\u02d5",
+    "dparen": "\u249f",
+    "dsuperior": "\uf6eb",
     "dtail": "\u0256",
-    "dtopbar": "\u018C",
+    "dtopbar": "\u018c",
     "duhiragana": "\u3065",
-    "dukatakana": "\u30C5",
-    "dz": "\u01F3",
-    "dzaltone": "\u02A3",
-    "dzcaron": "\u01C6",
-    "dzcurl": "\u02A5",
-    "dzeabkhasiancyrillic": "\u04E1",
+    "dukatakana": "\u30c5",
+    "dz": "\u01f3",
+    "dzaltone": "\u02a3",
+    "dzcaron": "\u01c6",
+    "dzcurl": "\u02a5",
+    "dzeabkhasiancyrillic": "\u04e1",
     "dzecyrillic": "\u0455",
-    "dzhecyrillic": "\u045F",
+    "dzhecyrillic": "\u045f",
     "e": "\u0065",
-    "eacute": "\u00E9",
+    "eacute": "\u00e9",
     "earth": "\u2641",
-    "ebengali": "\u098F",
-    "ebopomofo": "\u311C",
+    "ebengali": "\u098f",
+    "ebopomofo": "\u311c",
     "ebreve": "\u0115",
-    "ecandradeva": "\u090D",
-    "ecandragujarati": "\u0A8D",
+    "ecandradeva": "\u090d",
+    "ecandragujarati": "\u0a8d",
     "ecandravowelsigndeva": "\u0945",
-    "ecandravowelsigngujarati": "\u0AC5",
-    "ecaron": "\u011B",
-    "ecedillabreve": "\u1E1D",
+    "ecandravowelsigngujarati": "\u0ac5",
+    "ecaron": "\u011b",
+    "ecedillabreve": "\u1e1d",
     "echarmenian": "\u0565",
     "echyiwnarmenian": "\u0587",
-    "ecircle": "\u24D4",
-    "ecircumflex": "\u00EA",
-    "ecircumflexacute": "\u1EBF",
-    "ecircumflexbelow": "\u1E19",
-    "ecircumflexdotbelow": "\u1EC7",
-    "ecircumflexgrave": "\u1EC1",
-    "ecircumflexhookabove": "\u1EC3",
-    "ecircumflextilde": "\u1EC5",
+    "ecircle": "\u24d4",
+    "ecircumflex": "\u00ea",
+    "ecircumflexacute": "\u1ebf",
+    "ecircumflexbelow": "\u1e19",
+    "ecircumflexdotbelow": "\u1ec7",
+    "ecircumflexgrave": "\u1ec1",
+    "ecircumflexhookabove": "\u1ec3",
+    "ecircumflextilde": "\u1ec5",
     "ecyrillic": "\u0454",
     "edblgrave": "\u0205",
-    "edeva": "\u090F",
-    "edieresis": "\u00EB",
+    "edeva": "\u090f",
+    "edieresis": "\u00eb",
     "edot": "\u0117",
     "edotaccent": "\u0117",
-    "edotbelow": "\u1EB9",
-    "eegurmukhi": "\u0A0F",
-    "eematragurmukhi": "\u0A47",
+    "edotbelow": "\u1eb9",
+    "eegurmukhi": "\u0a0f",
+    "eematragurmukhi": "\u0a47",
     "efcyrillic": "\u0444",
-    "egrave": "\u00E8",
-    "egujarati": "\u0A8F",
+    "egrave": "\u00e8",
+    "egujarati": "\u0a8f",
     "eharmenian": "\u0567",
-    "ehbopomofo": "\u311D",
+    "ehbopomofo": "\u311d",
     "ehiragana": "\u3048",
-    "ehookabove": "\u1EBB",
-    "eibopomofo": "\u311F",
+    "ehookabove": "\u1ebb",
+    "eibopomofo": "\u311f",
     "eight": "\u0038",
     "eightarabic": "\u0668",
-    "eightbengali": "\u09EE",
+    "eightbengali": "\u09ee",
     "eightcircle": "\u2467",
     "eightcircleinversesansserif": "\u2791",
-    "eightdeva": "\u096E",
+    "eightdeva": "\u096e",
     "eighteencircle": "\u2471",
     "eighteenparen": "\u2485",
     "eighteenperiod": "\u2499",
-    "eightgujarati": "\u0AEE",
-    "eightgurmukhi": "\u0A6E",
+    "eightgujarati": "\u0aee",
+    "eightgurmukhi": "\u0a6e",
     "eighthackarabic": "\u0668",
     "eighthangzhou": "\u3028",
-    "eighthnotebeamed": "\u266B",
+    "eighthnotebeamed": "\u266b",
     "eightideographicparen": "\u3227",
     "eightinferior": "\u2088",
-    "eightmonospace": "\uFF18",
-    "eightoldstyle": "\uF738",
-    "eightparen": "\u247B",
-    "eightperiod": "\u248F",
-    "eightpersian": "\u06F8",
+    "eightmonospace": "\uff18",
+    "eightoldstyle": "\uf738",
+    "eightparen": "\u247b",
+    "eightperiod": "\u248f",
+    "eightpersian": "\u06f8",
     "eightroman": "\u2177",
     "eightsuperior": "\u2078",
-    "eightthai": "\u0E58",
+    "eightthai": "\u0e58",
     "einvertedbreve": "\u0207",
     "eiotifiedcyrillic": "\u0465",
-    "ekatakana": "\u30A8",
-    "ekatakanahalfwidth": "\uFF74",
-    "ekonkargurmukhi": "\u0A74",
+    "ekatakana": "\u30a8",
+    "ekatakanahalfwidth": "\uff74",
+    "ekonkargurmukhi": "\u0a74",
     "ekorean": "\u3154",
-    "elcyrillic": "\u043B",
+    "elcyrillic": "\u043b",
     "element": "\u2208",
-    "elevencircle": "\u246A",
-    "elevenparen": "\u247E",
+    "elevencircle": "\u246a",
+    "elevenparen": "\u247e",
     "elevenperiod": "\u2492",
-    "elevenroman": "\u217A",
+    "elevenroman": "\u217a",
     "ellipsis": "\u2026",
-    "ellipsisvertical": "\u22EE",
+    "ellipsisvertical": "\u22ee",
     "emacron": "\u0113",
-    "emacronacute": "\u1E17",
-    "emacrongrave": "\u1E15",
-    "emcyrillic": "\u043C",
+    "emacronacute": "\u1e17",
+    "emacrongrave": "\u1e15",
+    "emcyrillic": "\u043c",
     "emdash": "\u2014",
-    "emdashvertical": "\uFE31",
-    "emonospace": "\uFF45",
-    "emphasismarkarmenian": "\u055B",
+    "emdashvertical": "\ufe31",
+    "emonospace": "\uff45",
+    "emphasismarkarmenian": "\u055b",
     "emptyset": "\u2205",
     "enbopomofo": "\u3123",
-    "encyrillic": "\u043D",
+    "encyrillic": "\u043d",
     "endash": "\u2013",
-    "endashvertical": "\uFE32",
-    "endescendercyrillic": "\u04A3",
-    "eng": "\u014B",
+    "endashvertical": "\ufe32",
+    "endescendercyrillic": "\u04a3",
+    "eng": "\u014b",
     "engbopomofo": "\u3125",
-    "enghecyrillic": "\u04A5",
-    "enhookcyrillic": "\u04C8",
+    "enghecyrillic": "\u04a5",
+    "enhookcyrillic": "\u04c8",
     "enspace": "\u2002",
     "eogonek": "\u0119",
     "eokorean": "\u3153",
-    "eopen": "\u025B",
-    "eopenclosed": "\u029A",
-    "eopenreversed": "\u025C",
-    "eopenreversedclosed": "\u025E",
-    "eopenreversedhook": "\u025D",
-    "eparen": "\u24A0",
-    "epsilon": "\u03B5",
-    "epsilontonos": "\u03AD",
-    "equal": "\u003D",
-    "equalmonospace": "\uFF1D",
-    "equalsmall": "\uFE66",
-    "equalsuperior": "\u207C",
+    "eopen": "\u025b",
+    "eopenclosed": "\u029a",
+    "eopenreversed": "\u025c",
+    "eopenreversedclosed": "\u025e",
+    "eopenreversedhook": "\u025d",
+    "eparen": "\u24a0",
+    "epsilon": "\u03b5",
+    "epsilontonos": "\u03ad",
+    "equal": "\u003d",
+    "equalmonospace": "\uff1d",
+    "equalsmall": "\ufe66",
+    "equalsuperior": "\u207c",
     "equivalence": "\u2261",
     "erbopomofo": "\u3126",
     "ercyrillic": "\u0440",
     "ereversed": "\u0258",
-    "ereversedcyrillic": "\u044D",
+    "ereversedcyrillic": "\u044d",
     "escyrillic": "\u0441",
-    "esdescendercyrillic": "\u04AB",
+    "esdescendercyrillic": "\u04ab",
     "esh": "\u0283",
     "eshcurl": "\u0286",
-    "eshortdeva": "\u090E",
+    "eshortdeva": "\u090e",
     "eshortvowelsigndeva": "\u0946",
-    "eshreversedloop": "\u01AA",
+    "eshreversedloop": "\u01aa",
     "eshsquatreversed": "\u0285",
     "esmallhiragana": "\u3047",
-    "esmallkatakana": "\u30A7",
-    "esmallkatakanahalfwidth": "\uFF6A",
-    "estimated": "\u212E",
-    "esuperior": "\uF6EC",
-    "eta": "\u03B7",
+    "esmallkatakana": "\u30a7",
+    "esmallkatakanahalfwidth": "\uff6a",
+    "estimated": "\u212e",
+    "esuperior": "\uf6ec",
+    "eta": "\u03b7",
     "etarmenian": "\u0568",
-    "etatonos": "\u03AE",
-    "eth": "\u00F0",
-    "etilde": "\u1EBD",
-    "etildebelow": "\u1E1B",
+    "etatonos": "\u03ae",
+    "eth": "\u00f0",
+    "etilde": "\u1ebd",
+    "etildebelow": "\u1e1b",
     "etnahtafoukhhebrew": "\u0591",
     "etnahtafoukhlefthebrew": "\u0591",
     "etnahtahebrew": "\u0591",
     "etnahtalefthebrew": "\u0591",
-    "eturned": "\u01DD",
+    "eturned": "\u01dd",
     "eukorean": "\u3161",
-    "euro": "\u20AC",
-    "evowelsignbengali": "\u09C7",
+    "euro": "\u20ac",
+    "evowelsignbengali": "\u09c7",
     "evowelsigndeva": "\u0947",
-    "evowelsigngujarati": "\u0AC7",
+    "evowelsigngujarati": "\u0ac7",
     "exclam": "\u0021",
-    "exclamarmenian": "\u055C",
-    "exclamdbl": "\u203C",
-    "exclamdown": "\u00A1",
-    "exclamdownsmall": "\uF7A1",
-    "exclammonospace": "\uFF01",
-    "exclamsmall": "\uF721",
+    "exclamarmenian": "\u055c",
+    "exclamdbl": "\u203c",
+    "exclamdown": "\u00a1",
+    "exclamdownsmall": "\uf7a1",
+    "exclammonospace": "\uff01",
+    "exclamsmall": "\uf721",
     "existential": "\u2203",
     "ezh": "\u0292",
-    "ezhcaron": "\u01EF",
+    "ezhcaron": "\u01ef",
     "ezhcurl": "\u0293",
-    "ezhreversed": "\u01B9",
-    "ezhtail": "\u01BA",
+    "ezhreversed": "\u01b9",
+    "ezhtail": "\u01ba",
     "f": "\u0066",
-    "fadeva": "\u095E",
-    "fagurmukhi": "\u0A5E",
+    "fadeva": "\u095e",
+    "fagurmukhi": "\u0a5e",
     "fahrenheit": "\u2109",
-    "fathaarabic": "\u064E",
-    "fathalowarabic": "\u064E",
-    "fathatanarabic": "\u064B",
+    "fathaarabic": "\u064e",
+    "fathalowarabic": "\u064e",
+    "fathatanarabic": "\u064b",
     "fbopomofo": "\u3108",
-    "fcircle": "\u24D5",
-    "fdotaccent": "\u1E1F",
+    "fcircle": "\u24d5",
+    "fdotaccent": "\u1e1f",
     "feharabic": "\u0641",
     "feharmenian": "\u0586",
-    "fehfinalarabic": "\uFED2",
-    "fehinitialarabic": "\uFED3",
-    "fehmedialarabic": "\uFED4",
-    "feicoptic": "\u03E5",
+    "fehfinalarabic": "\ufed2",
+    "fehinitialarabic": "\ufed3",
+    "fehmedialarabic": "\ufed4",
+    "feicoptic": "\u03e5",
     "female": "\u2640",
-    "ff": "\uFB00",
-    "ffi": "\uFB03",
-    "ffl": "\uFB04",
-    "fi": "\uFB01",
-    "fifteencircle": "\u246E",
+    "ff": "\ufb00",
+    "ffi": "\ufb03",
+    "ffl": "\ufb04",
+    "fi": "\ufb01",
+    "fifteencircle": "\u246e",
     "fifteenparen": "\u2482",
     "fifteenperiod": "\u2496",
     "figuredash": "\u2012",
-    "filledbox": "\u25A0",
-    "filledrect": "\u25AC",
-    "finalkaf": "\u05DA",
-    "finalkafdagesh": "\uFB3A",
-    "finalkafdageshhebrew": "\uFB3A",
-    "finalkafhebrew": "\u05DA",
-    "finalkafqamats": "\u05DA\u05B8",
-    "finalkafqamatshebrew": "\u05DA\u05B8",
-    "finalkafsheva": "\u05DA\u05B0",
-    "finalkafshevahebrew": "\u05DA\u05B0",
-    "finalmem": "\u05DD",
-    "finalmemhebrew": "\u05DD",
-    "finalnun": "\u05DF",
-    "finalnunhebrew": "\u05DF",
-    "finalpe": "\u05E3",
-    "finalpehebrew": "\u05E3",
-    "finaltsadi": "\u05E5",
-    "finaltsadihebrew": "\u05E5",
-    "firsttonechinese": "\u02C9",
-    "fisheye": "\u25C9",
+    "filledbox": "\u25a0",
+    "filledrect": "\u25ac",
+    "finalkaf": "\u05da",
+    "finalkafdagesh": "\ufb3a",
+    "finalkafdageshhebrew": "\ufb3a",
+    "finalkafhebrew": "\u05da",
+    "finalkafqamats": "\u05da\u05b8",
+    "finalkafqamatshebrew": "\u05da\u05b8",
+    "finalkafsheva": "\u05da\u05b0",
+    "finalkafshevahebrew": "\u05da\u05b0",
+    "finalmem": "\u05dd",
+    "finalmemhebrew": "\u05dd",
+    "finalnun": "\u05df",
+    "finalnunhebrew": "\u05df",
+    "finalpe": "\u05e3",
+    "finalpehebrew": "\u05e3",
+    "finaltsadi": "\u05e5",
+    "finaltsadihebrew": "\u05e5",
+    "firsttonechinese": "\u02c9",
+    "fisheye": "\u25c9",
     "fitacyrillic": "\u0473",
     "five": "\u0035",
     "fivearabic": "\u0665",
-    "fivebengali": "\u09EB",
+    "fivebengali": "\u09eb",
     "fivecircle": "\u2464",
-    "fivecircleinversesansserif": "\u278E",
-    "fivedeva": "\u096B",
-    "fiveeighths": "\u215D",
-    "fivegujarati": "\u0AEB",
-    "fivegurmukhi": "\u0A6B",
+    "fivecircleinversesansserif": "\u278e",
+    "fivedeva": "\u096b",
+    "fiveeighths": "\u215d",
+    "fivegujarati": "\u0aeb",
+    "fivegurmukhi": "\u0a6b",
     "fivehackarabic": "\u0665",
     "fivehangzhou": "\u3025",
     "fiveideographicparen": "\u3224",
     "fiveinferior": "\u2085",
-    "fivemonospace": "\uFF15",
-    "fiveoldstyle": "\uF735",
+    "fivemonospace": "\uff15",
+    "fiveoldstyle": "\uf735",
     "fiveparen": "\u2478",
-    "fiveperiod": "\u248C",
-    "fivepersian": "\u06F5",
+    "fiveperiod": "\u248c",
+    "fivepersian": "\u06f5",
     "fiveroman": "\u2174",
     "fivesuperior": "\u2075",
-    "fivethai": "\u0E55",
-    "fl": "\uFB02",
+    "fivethai": "\u0e55",
+    "fl": "\ufb02",
     "florin": "\u0192",
-    "fmonospace": "\uFF46",
+    "fmonospace": "\uff46",
     "fmsquare": "\u3399",
-    "fofanthai": "\u0E1F",
-    "fofathai": "\u0E1D",
-    "fongmanthai": "\u0E4F",
+    "fofanthai": "\u0e1f",
+    "fofathai": "\u0e1d",
+    "fongmanthai": "\u0e4f",
     "forall": "\u2200",
     "four": "\u0034",
     "fourarabic": "\u0664",
-    "fourbengali": "\u09EA",
+    "fourbengali": "\u09ea",
     "fourcircle": "\u2463",
-    "fourcircleinversesansserif": "\u278D",
-    "fourdeva": "\u096A",
-    "fourgujarati": "\u0AEA",
-    "fourgurmukhi": "\u0A6A",
+    "fourcircleinversesansserif": "\u278d",
+    "fourdeva": "\u096a",
+    "fourgujarati": "\u0aea",
+    "fourgurmukhi": "\u0a6a",
     "fourhackarabic": "\u0664",
     "fourhangzhou": "\u3024",
     "fourideographicparen": "\u3223",
     "fourinferior": "\u2084",
-    "fourmonospace": "\uFF14",
-    "fournumeratorbengali": "\u09F7",
-    "fouroldstyle": "\uF734",
+    "fourmonospace": "\uff14",
+    "fournumeratorbengali": "\u09f7",
+    "fouroldstyle": "\uf734",
     "fourparen": "\u2477",
-    "fourperiod": "\u248B",
-    "fourpersian": "\u06F4",
+    "fourperiod": "\u248b",
+    "fourpersian": "\u06f4",
     "fourroman": "\u2173",
     "foursuperior": "\u2074",
-    "fourteencircle": "\u246D",
+    "fourteencircle": "\u246d",
     "fourteenparen": "\u2481",
     "fourteenperiod": "\u2495",
-    "fourthai": "\u0E54",
-    "fourthtonechinese": "\u02CB",
-    "fparen": "\u24A1",
+    "fourthai": "\u0e54",
+    "fourthtonechinese": "\u02cb",
+    "fparen": "\u24a1",
     "fraction": "\u2044",
-    "franc": "\u20A3",
+    "franc": "\u20a3",
     "g": "\u0067",
     "gabengali": "\u0997",
-    "gacute": "\u01F5",
+    "gacute": "\u01f5",
     "gadeva": "\u0917",
-    "gafarabic": "\u06AF",
-    "gaffinalarabic": "\uFB93",
-    "gafinitialarabic": "\uFB94",
-    "gafmedialarabic": "\uFB95",
-    "gagujarati": "\u0A97",
-    "gagurmukhi": "\u0A17",
-    "gahiragana": "\u304C",
-    "gakatakana": "\u30AC",
-    "gamma": "\u03B3",
+    "gafarabic": "\u06af",
+    "gaffinalarabic": "\ufb93",
+    "gafinitialarabic": "\ufb94",
+    "gafmedialarabic": "\ufb95",
+    "gagujarati": "\u0a97",
+    "gagurmukhi": "\u0a17",
+    "gahiragana": "\u304c",
+    "gakatakana": "\u30ac",
+    "gamma": "\u03b3",
     "gammalatinsmall": "\u0263",
-    "gammasuperior": "\u02E0",
-    "gangiacoptic": "\u03EB",
-    "gbopomofo": "\u310D",
-    "gbreve": "\u011F",
-    "gcaron": "\u01E7",
+    "gammasuperior": "\u02e0",
+    "gangiacoptic": "\u03eb",
+    "gbopomofo": "\u310d",
+    "gbreve": "\u011f",
+    "gcaron": "\u01e7",
     "gcedilla": "\u0123",
-    "gcircle": "\u24D6",
-    "gcircumflex": "\u011D",
+    "gcircle": "\u24d6",
+    "gcircumflex": "\u011d",
     "gcommaaccent": "\u0123",
     "gdot": "\u0121",
     "gdotaccent": "\u0121",
     "gecyrillic": "\u0433",
     "gehiragana": "\u3052",
-    "gekatakana": "\u30B2",
+    "gekatakana": "\u30b2",
     "geometricallyequal": "\u2251",
-    "gereshaccenthebrew": "\u059C",
-    "gereshhebrew": "\u05F3",
-    "gereshmuqdamhebrew": "\u059D",
-    "germandbls": "\u00DF",
-    "gershayimaccenthebrew": "\u059E",
-    "gershayimhebrew": "\u05F4",
+    "gereshaccenthebrew": "\u059c",
+    "gereshhebrew": "\u05f3",
+    "gereshmuqdamhebrew": "\u059d",
+    "germandbls": "\u00df",
+    "gershayimaccenthebrew": "\u059e",
+    "gershayimhebrew": "\u05f4",
     "getamark": "\u3013",
     "ghabengali": "\u0998",
     "ghadarmenian": "\u0572",
     "ghadeva": "\u0918",
-    "ghagujarati": "\u0A98",
-    "ghagurmukhi": "\u0A18",
-    "ghainarabic": "\u063A",
-    "ghainfinalarabic": "\uFECE",
-    "ghaininitialarabic": "\uFECF",
-    "ghainmedialarabic": "\uFED0",
+    "ghagujarati": "\u0a98",
+    "ghagurmukhi": "\u0a18",
+    "ghainarabic": "\u063a",
+    "ghainfinalarabic": "\ufece",
+    "ghaininitialarabic": "\ufecf",
+    "ghainmedialarabic": "\ufed0",
     "ghemiddlehookcyrillic": "\u0495",
     "ghestrokecyrillic": "\u0493",
     "gheupturncyrillic": "\u0491",
-    "ghhadeva": "\u095A",
-    "ghhagurmukhi": "\u0A5A",
+    "ghhadeva": "\u095a",
+    "ghhagurmukhi": "\u0a5a",
     "ghook": "\u0260",
     "ghzsquare": "\u3393",
-    "gihiragana": "\u304E",
-    "gikatakana": "\u30AE",
+    "gihiragana": "\u304e",
+    "gikatakana": "\u30ae",
     "gimarmenian": "\u0563",
-    "gimel": "\u05D2",
-    "gimeldagesh": "\uFB32",
-    "gimeldageshhebrew": "\uFB32",
-    "gimelhebrew": "\u05D2",
+    "gimel": "\u05d2",
+    "gimeldagesh": "\ufb32",
+    "gimeldageshhebrew": "\ufb32",
+    "gimelhebrew": "\u05d2",
     "gjecyrillic": "\u0453",
-    "glottalinvertedstroke": "\u01BE",
+    "glottalinvertedstroke": "\u01be",
     "glottalstop": "\u0294",
     "glottalstopinverted": "\u0296",
-    "glottalstopmod": "\u02C0",
+    "glottalstopmod": "\u02c0",
     "glottalstopreversed": "\u0295",
-    "glottalstopreversedmod": "\u02C1",
-    "glottalstopreversedsuperior": "\u02E4",
-    "glottalstopstroke": "\u02A1",
-    "glottalstopstrokereversed": "\u02A2",
-    "gmacron": "\u1E21",
-    "gmonospace": "\uFF47",
+    "glottalstopreversedmod": "\u02c1",
+    "glottalstopreversedsuperior": "\u02e4",
+    "glottalstopstroke": "\u02a1",
+    "glottalstopstrokereversed": "\u02a2",
+    "gmacron": "\u1e21",
+    "gmonospace": "\uff47",
     "gohiragana": "\u3054",
-    "gokatakana": "\u30B4",
-    "gparen": "\u24A2",
-    "gpasquare": "\u33AC",
+    "gokatakana": "\u30b4",
+    "gparen": "\u24a2",
+    "gpasquare": "\u33ac",
     "gradient": "\u2207",
     "grave": "\u0060",
     "gravebelowcmb": "\u0316",
     "gravecmb": "\u0300",
     "gravecomb": "\u0300",
     "gravedeva": "\u0953",
-    "gravelowmod": "\u02CE",
-    "gravemonospace": "\uFF40",
+    "gravelowmod": "\u02ce",
+    "gravemonospace": "\uff40",
     "gravetonecmb": "\u0340",
-    "greater": "\u003E",
+    "greater": "\u003e",
     "greaterequal": "\u2265",
-    "greaterequalorless": "\u22DB",
-    "greatermonospace": "\uFF1E",
+    "greaterequalorless": "\u22db",
+    "greatermonospace": "\uff1e",
     "greaterorequivalent": "\u2273",
     "greaterorless": "\u2277",
     "greateroverequal": "\u2267",
-    "greatersmall": "\uFE65",
+    "greatersmall": "\ufe65",
     "gscript": "\u0261",
-    "gstroke": "\u01E5",
+    "gstroke": "\u01e5",
     "guhiragana": "\u3050",
-    "guillemotleft": "\u00AB",
-    "guillemotright": "\u00BB",
+    "guillemotleft": "\u00ab",
+    "guillemotright": "\u00bb",
     "guilsinglleft": "\u2039",
-    "guilsinglright": "\u203A",
-    "gukatakana": "\u30B0",
+    "guilsinglright": "\u203a",
+    "gukatakana": "\u30b0",
     "guramusquare": "\u3318",
-    "gysquare": "\u33C9",
+    "gysquare": "\u33c9",
     "h": "\u0068",
-    "haabkhasiancyrillic": "\u04A9",
-    "haaltonearabic": "\u06C1",
-    "habengali": "\u09B9",
-    "hadescendercyrillic": "\u04B3",
+    "haabkhasiancyrillic": "\u04a9",
+    "haaltonearabic": "\u06c1",
+    "habengali": "\u09b9",
+    "hadescendercyrillic": "\u04b3",
     "hadeva": "\u0939",
-    "hagujarati": "\u0AB9",
-    "hagurmukhi": "\u0A39",
-    "haharabic": "\u062D",
-    "hahfinalarabic": "\uFEA2",
-    "hahinitialarabic": "\uFEA3",
-    "hahiragana": "\u306F",
-    "hahmedialarabic": "\uFEA4",
-    "haitusquare": "\u332A",
-    "hakatakana": "\u30CF",
-    "hakatakanahalfwidth": "\uFF8A",
-    "halantgurmukhi": "\u0A4D",
+    "hagujarati": "\u0ab9",
+    "hagurmukhi": "\u0a39",
+    "haharabic": "\u062d",
+    "hahfinalarabic": "\ufea2",
+    "hahinitialarabic": "\ufea3",
+    "hahiragana": "\u306f",
+    "hahmedialarabic": "\ufea4",
+    "haitusquare": "\u332a",
+    "hakatakana": "\u30cf",
+    "hakatakanahalfwidth": "\uff8a",
+    "halantgurmukhi": "\u0a4d",
     "hamzaarabic": "\u0621",
-    "hamzadammaarabic": "\u0621\u064F",
-    "hamzadammatanarabic": "\u0621\u064C",
-    "hamzafathaarabic": "\u0621\u064E",
-    "hamzafathatanarabic": "\u0621\u064B",
+    "hamzadammaarabic": "\u0621\u064f",
+    "hamzadammatanarabic": "\u0621\u064c",
+    "hamzafathaarabic": "\u0621\u064e",
+    "hamzafathatanarabic": "\u0621\u064b",
     "hamzalowarabic": "\u0621",
     "hamzalowkasraarabic": "\u0621\u0650",
-    "hamzalowkasratanarabic": "\u0621\u064D",
+    "hamzalowkasratanarabic": "\u0621\u064d",
     "hamzasukunarabic": "\u0621\u0652",
     "hangulfiller": "\u3164",
-    "hardsigncyrillic": "\u044A",
-    "harpoonleftbarbup": "\u21BC",
-    "harpoonrightbarbup": "\u21C0",
-    "hasquare": "\u33CA",
-    "hatafpatah": "\u05B2",
-    "hatafpatah16": "\u05B2",
-    "hatafpatah23": "\u05B2",
-    "hatafpatah2f": "\u05B2",
-    "hatafpatahhebrew": "\u05B2",
-    "hatafpatahnarrowhebrew": "\u05B2",
-    "hatafpatahquarterhebrew": "\u05B2",
-    "hatafpatahwidehebrew": "\u05B2",
-    "hatafqamats": "\u05B3",
-    "hatafqamats1b": "\u05B3",
-    "hatafqamats28": "\u05B3",
-    "hatafqamats34": "\u05B3",
-    "hatafqamatshebrew": "\u05B3",
-    "hatafqamatsnarrowhebrew": "\u05B3",
-    "hatafqamatsquarterhebrew": "\u05B3",
-    "hatafqamatswidehebrew": "\u05B3",
-    "hatafsegol": "\u05B1",
-    "hatafsegol17": "\u05B1",
-    "hatafsegol24": "\u05B1",
-    "hatafsegol30": "\u05B1",
-    "hatafsegolhebrew": "\u05B1",
-    "hatafsegolnarrowhebrew": "\u05B1",
-    "hatafsegolquarterhebrew": "\u05B1",
-    "hatafsegolwidehebrew": "\u05B1",
+    "hardsigncyrillic": "\u044a",
+    "harpoonleftbarbup": "\u21bc",
+    "harpoonrightbarbup": "\u21c0",
+    "hasquare": "\u33ca",
+    "hatafpatah": "\u05b2",
+    "hatafpatah16": "\u05b2",
+    "hatafpatah23": "\u05b2",
+    "hatafpatah2f": "\u05b2",
+    "hatafpatahhebrew": "\u05b2",
+    "hatafpatahnarrowhebrew": "\u05b2",
+    "hatafpatahquarterhebrew": "\u05b2",
+    "hatafpatahwidehebrew": "\u05b2",
+    "hatafqamats": "\u05b3",
+    "hatafqamats1b": "\u05b3",
+    "hatafqamats28": "\u05b3",
+    "hatafqamats34": "\u05b3",
+    "hatafqamatshebrew": "\u05b3",
+    "hatafqamatsnarrowhebrew": "\u05b3",
+    "hatafqamatsquarterhebrew": "\u05b3",
+    "hatafqamatswidehebrew": "\u05b3",
+    "hatafsegol": "\u05b1",
+    "hatafsegol17": "\u05b1",
+    "hatafsegol24": "\u05b1",
+    "hatafsegol30": "\u05b1",
+    "hatafsegolhebrew": "\u05b1",
+    "hatafsegolnarrowhebrew": "\u05b1",
+    "hatafsegolquarterhebrew": "\u05b1",
+    "hatafsegolwidehebrew": "\u05b1",
     "hbar": "\u0127",
-    "hbopomofo": "\u310F",
-    "hbrevebelow": "\u1E2B",
-    "hcedilla": "\u1E29",
-    "hcircle": "\u24D7",
+    "hbopomofo": "\u310f",
+    "hbrevebelow": "\u1e2b",
+    "hcedilla": "\u1e29",
+    "hcircle": "\u24d7",
     "hcircumflex": "\u0125",
-    "hdieresis": "\u1E27",
-    "hdotaccent": "\u1E23",
-    "hdotbelow": "\u1E25",
-    "he": "\u05D4",
+    "hdieresis": "\u1e27",
+    "hdotaccent": "\u1e23",
+    "hdotbelow": "\u1e25",
+    "he": "\u05d4",
     "heart": "\u2665",
     "heartsuitblack": "\u2665",
     "heartsuitwhite": "\u2661",
-    "hedagesh": "\uFB34",
-    "hedageshhebrew": "\uFB34",
-    "hehaltonearabic": "\u06C1",
+    "hedagesh": "\ufb34",
+    "hedageshhebrew": "\ufb34",
+    "hehaltonearabic": "\u06c1",
     "heharabic": "\u0647",
-    "hehebrew": "\u05D4",
-    "hehfinalaltonearabic": "\uFBA7",
-    "hehfinalalttwoarabic": "\uFEEA",
-    "hehfinalarabic": "\uFEEA",
-    "hehhamzaabovefinalarabic": "\uFBA5",
-    "hehhamzaaboveisolatedarabic": "\uFBA4",
-    "hehinitialaltonearabic": "\uFBA8",
-    "hehinitialarabic": "\uFEEB",
+    "hehebrew": "\u05d4",
+    "hehfinalaltonearabic": "\ufba7",
+    "hehfinalalttwoarabic": "\ufeea",
+    "hehfinalarabic": "\ufeea",
+    "hehhamzaabovefinalarabic": "\ufba5",
+    "hehhamzaaboveisolatedarabic": "\ufba4",
+    "hehinitialaltonearabic": "\ufba8",
+    "hehinitialarabic": "\ufeeb",
     "hehiragana": "\u3078",
-    "hehmedialaltonearabic": "\uFBA9",
-    "hehmedialarabic": "\uFEEC",
-    "heiseierasquare": "\u337B",
-    "hekatakana": "\u30D8",
-    "hekatakanahalfwidth": "\uFF8D",
+    "hehmedialaltonearabic": "\ufba9",
+    "hehmedialarabic": "\ufeec",
+    "heiseierasquare": "\u337b",
+    "hekatakana": "\u30d8",
+    "hekatakanahalfwidth": "\uff8d",
     "hekutaarusquare": "\u3336",
     "henghook": "\u0267",
     "herutusquare": "\u3339",
-    "het": "\u05D7",
-    "hethebrew": "\u05D7",
+    "het": "\u05d7",
+    "hethebrew": "\u05d7",
     "hhook": "\u0266",
-    "hhooksuperior": "\u02B1",
-    "hieuhacirclekorean": "\u327B",
-    "hieuhaparenkorean": "\u321B",
-    "hieuhcirclekorean": "\u326D",
-    "hieuhkorean": "\u314E",
-    "hieuhparenkorean": "\u320D",
+    "hhooksuperior": "\u02b1",
+    "hieuhacirclekorean": "\u327b",
+    "hieuhaparenkorean": "\u321b",
+    "hieuhcirclekorean": "\u326d",
+    "hieuhkorean": "\u314e",
+    "hieuhparenkorean": "\u320d",
     "hihiragana": "\u3072",
-    "hikatakana": "\u30D2",
-    "hikatakanahalfwidth": "\uFF8B",
-    "hiriq": "\u05B4",
-    "hiriq14": "\u05B4",
-    "hiriq21": "\u05B4",
-    "hiriq2d": "\u05B4",
-    "hiriqhebrew": "\u05B4",
-    "hiriqnarrowhebrew": "\u05B4",
-    "hiriqquarterhebrew": "\u05B4",
-    "hiriqwidehebrew": "\u05B4",
-    "hlinebelow": "\u1E96",
-    "hmonospace": "\uFF48",
+    "hikatakana": "\u30d2",
+    "hikatakanahalfwidth": "\uff8b",
+    "hiriq": "\u05b4",
+    "hiriq14": "\u05b4",
+    "hiriq21": "\u05b4",
+    "hiriq2d": "\u05b4",
+    "hiriqhebrew": "\u05b4",
+    "hiriqnarrowhebrew": "\u05b4",
+    "hiriqquarterhebrew": "\u05b4",
+    "hiriqwidehebrew": "\u05b4",
+    "hlinebelow": "\u1e96",
+    "hmonospace": "\uff48",
     "hoarmenian": "\u0570",
-    "hohipthai": "\u0E2B",
-    "hohiragana": "\u307B",
-    "hokatakana": "\u30DB",
-    "hokatakanahalfwidth": "\uFF8E",
-    "holam": "\u05B9",
-    "holam19": "\u05B9",
-    "holam26": "\u05B9",
-    "holam32": "\u05B9",
-    "holamhebrew": "\u05B9",
-    "holamnarrowhebrew": "\u05B9",
-    "holamquarterhebrew": "\u05B9",
-    "holamwidehebrew": "\u05B9",
-    "honokhukthai": "\u0E2E",
+    "hohipthai": "\u0e2b",
+    "hohiragana": "\u307b",
+    "hokatakana": "\u30db",
+    "hokatakanahalfwidth": "\uff8e",
+    "holam": "\u05b9",
+    "holam19": "\u05b9",
+    "holam26": "\u05b9",
+    "holam32": "\u05b9",
+    "holamhebrew": "\u05b9",
+    "holamnarrowhebrew": "\u05b9",
+    "holamquarterhebrew": "\u05b9",
+    "holamwidehebrew": "\u05b9",
+    "honokhukthai": "\u0e2e",
     "hookabovecomb": "\u0309",
     "hookcmb": "\u0309",
     "hookpalatalizedbelowcmb": "\u0321",
     "hookretroflexbelowcmb": "\u0322",
     "hoonsquare": "\u3342",
-    "horicoptic": "\u03E9",
+    "horicoptic": "\u03e9",
     "horizontalbar": "\u2015",
-    "horncmb": "\u031B",
+    "horncmb": "\u031b",
     "hotsprings": "\u2668",
     "house": "\u2302",
-    "hparen": "\u24A3",
-    "hsuperior": "\u02B0",
+    "hparen": "\u24a3",
+    "hsuperior": "\u02b0",
     "hturned": "\u0265",
     "huhiragana": "\u3075",
     "huiitosquare": "\u3333",
-    "hukatakana": "\u30D5",
-    "hukatakanahalfwidth": "\uFF8C",
-    "hungarumlaut": "\u02DD",
-    "hungarumlautcmb": "\u030B",
+    "hukatakana": "\u30d5",
+    "hukatakanahalfwidth": "\uff8c",
+    "hungarumlaut": "\u02dd",
+    "hungarumlautcmb": "\u030b",
     "hv": "\u0195",
-    "hyphen": "\u002D",
-    "hypheninferior": "\uF6E5",
-    "hyphenmonospace": "\uFF0D",
-    "hyphensmall": "\uFE63",
-    "hyphensuperior": "\uF6E6",
+    "hyphen": "\u002d",
+    "hypheninferior": "\uf6e5",
+    "hyphenmonospace": "\uff0d",
+    "hyphensmall": "\ufe63",
+    "hyphensuperior": "\uf6e6",
     "hyphentwo": "\u2010",
     "i": "\u0069",
-    "iacute": "\u00ED",
-    "iacyrillic": "\u044F",
+    "iacute": "\u00ed",
+    "iacyrillic": "\u044f",
     "ibengali": "\u0987",
     "ibopomofo": "\u3127",
-    "ibreve": "\u012D",
-    "icaron": "\u01D0",
-    "icircle": "\u24D8",
-    "icircumflex": "\u00EE",
+    "ibreve": "\u012d",
+    "icaron": "\u01d0",
+    "icircle": "\u24d8",
+    "icircumflex": "\u00ee",
     "icyrillic": "\u0456",
     "idblgrave": "\u0209",
-    "ideographearthcircle": "\u328F",
-    "ideographfirecircle": "\u328B",
-    "ideographicallianceparen": "\u323F",
-    "ideographiccallparen": "\u323A",
-    "ideographiccentrecircle": "\u32A5",
+    "ideographearthcircle": "\u328f",
+    "ideographfirecircle": "\u328b",
+    "ideographicallianceparen": "\u323f",
+    "ideographiccallparen": "\u323a",
+    "ideographiccentrecircle": "\u32a5",
     "ideographicclose": "\u3006",
     "ideographiccomma": "\u3001",
-    "ideographiccommaleft": "\uFF64",
+    "ideographiccommaleft": "\uff64",
     "ideographiccongratulationparen": "\u3237",
-    "ideographiccorrectcircle": "\u32A3",
-    "ideographicearthparen": "\u322F",
-    "ideographicenterpriseparen": "\u323D",
-    "ideographicexcellentcircle": "\u329D",
+    "ideographiccorrectcircle": "\u32a3",
+    "ideographicearthparen": "\u322f",
+    "ideographicenterpriseparen": "\u323d",
+    "ideographicexcellentcircle": "\u329d",
     "ideographicfestivalparen": "\u3240",
     "ideographicfinancialcircle": "\u3296",
     "ideographicfinancialparen": "\u3236",
-    "ideographicfireparen": "\u322B",
+    "ideographicfireparen": "\u322b",
     "ideographichaveparen": "\u3232",
-    "ideographichighcircle": "\u32A4",
+    "ideographichighcircle": "\u32a4",
     "ideographiciterationmark": "\u3005",
     "ideographiclaborcircle": "\u3298",
     "ideographiclaborparen": "\u3238",
-    "ideographicleftcircle": "\u32A7",
-    "ideographiclowcircle": "\u32A6",
-    "ideographicmedicinecircle": "\u32A9",
-    "ideographicmetalparen": "\u322E",
-    "ideographicmoonparen": "\u322A",
+    "ideographicleftcircle": "\u32a7",
+    "ideographiclowcircle": "\u32a6",
+    "ideographicmedicinecircle": "\u32a9",
+    "ideographicmetalparen": "\u322e",
+    "ideographicmoonparen": "\u322a",
     "ideographicnameparen": "\u3234",
     "ideographicperiod": "\u3002",
-    "ideographicprintcircle": "\u329E",
+    "ideographicprintcircle": "\u329e",
     "ideographicreachparen": "\u3243",
     "ideographicrepresentparen": "\u3239",
-    "ideographicresourceparen": "\u323E",
-    "ideographicrightcircle": "\u32A8",
+    "ideographicresourceparen": "\u323e",
+    "ideographicrightcircle": "\u32a8",
     "ideographicsecretcircle": "\u3299",
     "ideographicselfparen": "\u3242",
     "ideographicsocietyparen": "\u3233",
     "ideographicspace": "\u3000",
     "ideographicspecialparen": "\u3235",
     "ideographicstockparen": "\u3231",
-    "ideographicstudyparen": "\u323B",
+    "ideographicstudyparen": "\u323b",
     "ideographicsunparen": "\u3230",
-    "ideographicsuperviseparen": "\u323C",
-    "ideographicwaterparen": "\u322C",
-    "ideographicwoodparen": "\u322D",
+    "ideographicsuperviseparen": "\u323c",
+    "ideographicwaterparen": "\u322c",
+    "ideographicwoodparen": "\u322d",
     "ideographiczero": "\u3007",
-    "ideographmetalcircle": "\u328E",
-    "ideographmooncircle": "\u328A",
+    "ideographmetalcircle": "\u328e",
+    "ideographmooncircle": "\u328a",
     "ideographnamecircle": "\u3294",
     "ideographsuncircle": "\u3290",
-    "ideographwatercircle": "\u328C",
-    "ideographwoodcircle": "\u328D",
+    "ideographwatercircle": "\u328c",
+    "ideographwoodcircle": "\u328d",
     "ideva": "\u0907",
-    "idieresis": "\u00EF",
-    "idieresisacute": "\u1E2F",
-    "idieresiscyrillic": "\u04E5",
-    "idotbelow": "\u1ECB",
-    "iebrevecyrillic": "\u04D7",
+    "idieresis": "\u00ef",
+    "idieresisacute": "\u1e2f",
+    "idieresiscyrillic": "\u04e5",
+    "idotbelow": "\u1ecb",
+    "iebrevecyrillic": "\u04d7",
     "iecyrillic": "\u0435",
     "ieungacirclekorean": "\u3275",
     "ieungaparenkorean": "\u3215",
     "ieungcirclekorean": "\u3267",
     "ieungkorean": "\u3147",
     "ieungparenkorean": "\u3207",
-    "igrave": "\u00EC",
-    "igujarati": "\u0A87",
-    "igurmukhi": "\u0A07",
+    "igrave": "\u00ec",
+    "igujarati": "\u0a87",
+    "igurmukhi": "\u0a07",
     "ihiragana": "\u3044",
-    "ihookabove": "\u1EC9",
+    "ihookabove": "\u1ec9",
     "iibengali": "\u0988",
     "iicyrillic": "\u0438",
     "iideva": "\u0908",
-    "iigujarati": "\u0A88",
-    "iigurmukhi": "\u0A08",
-    "iimatragurmukhi": "\u0A40",
-    "iinvertedbreve": "\u020B",
+    "iigujarati": "\u0a88",
+    "iigurmukhi": "\u0a08",
+    "iimatragurmukhi": "\u0a40",
+    "iinvertedbreve": "\u020b",
     "iishortcyrillic": "\u0439",
-    "iivowelsignbengali": "\u09C0",
+    "iivowelsignbengali": "\u09c0",
     "iivowelsigndeva": "\u0940",
-    "iivowelsigngujarati": "\u0AC0",
+    "iivowelsigngujarati": "\u0ac0",
     "ij": "\u0133",
-    "ikatakana": "\u30A4",
-    "ikatakanahalfwidth": "\uFF72",
+    "ikatakana": "\u30a4",
+    "ikatakanahalfwidth": "\uff72",
     "ikorean": "\u3163",
-    "ilde": "\u02DC",
-    "iluyhebrew": "\u05AC",
-    "imacron": "\u012B",
-    "imacroncyrillic": "\u04E3",
+    "ilde": "\u02dc",
+    "iluyhebrew": "\u05ac",
+    "imacron": "\u012b",
+    "imacroncyrillic": "\u04e3",
     "imageorapproximatelyequal": "\u2253",
-    "imatragurmukhi": "\u0A3F",
-    "imonospace": "\uFF49",
+    "imatragurmukhi": "\u0a3f",
+    "imonospace": "\uff49",
     "increment": "\u2206",
-    "infinity": "\u221E",
-    "iniarmenian": "\u056B",
-    "integral": "\u222B",
+    "infinity": "\u221e",
+    "iniarmenian": "\u056b",
+    "integral": "\u222b",
     "integralbottom": "\u2321",
     "integralbt": "\u2321",
-    "integralex": "\uF8F5",
+    "integralex": "\uf8f5",
     "integraltop": "\u2320",
     "integraltp": "\u2320",
     "intersection": "\u2229",
     "intisquare": "\u3305",
-    "invbullet": "\u25D8",
-    "invcircle": "\u25D9",
-    "invsmileface": "\u263B",
+    "invbullet": "\u25d8",
+    "invcircle": "\u25d9",
+    "invsmileface": "\u263b",
     "iocyrillic": "\u0451",
-    "iogonek": "\u012F",
-    "iota": "\u03B9",
-    "iotadieresis": "\u03CA",
+    "iogonek": "\u012f",
+    "iota": "\u03b9",
+    "iotadieresis": "\u03ca",
     "iotadieresistonos": "\u0390",
     "iotalatin": "\u0269",
-    "iotatonos": "\u03AF",
-    "iparen": "\u24A4",
-    "irigurmukhi": "\u0A72",
+    "iotatonos": "\u03af",
+    "iparen": "\u24a4",
+    "irigurmukhi": "\u0a72",
     "ismallhiragana": "\u3043",
-    "ismallkatakana": "\u30A3",
-    "ismallkatakanahalfwidth": "\uFF68",
-    "issharbengali": "\u09FA",
+    "ismallkatakana": "\u30a3",
+    "ismallkatakanahalfwidth": "\uff68",
+    "issharbengali": "\u09fa",
     "istroke": "\u0268",
-    "isuperior": "\uF6ED",
-    "iterationhiragana": "\u309D",
-    "iterationkatakana": "\u30FD",
+    "isuperior": "\uf6ed",
+    "iterationhiragana": "\u309d",
+    "iterationkatakana": "\u30fd",
     "itilde": "\u0129",
-    "itildebelow": "\u1E2D",
+    "itildebelow": "\u1e2d",
     "iubopomofo": "\u3129",
-    "iucyrillic": "\u044E",
-    "ivowelsignbengali": "\u09BF",
-    "ivowelsigndeva": "\u093F",
-    "ivowelsigngujarati": "\u0ABF",
+    "iucyrillic": "\u044e",
+    "ivowelsignbengali": "\u09bf",
+    "ivowelsigndeva": "\u093f",
+    "ivowelsigngujarati": "\u0abf",
     "izhitsacyrillic": "\u0475",
     "izhitsadblgravecyrillic": "\u0477",
-    "j": "\u006A",
+    "j": "\u006a",
     "jaarmenian": "\u0571",
-    "jabengali": "\u099C",
-    "jadeva": "\u091C",
-    "jagujarati": "\u0A9C",
-    "jagurmukhi": "\u0A1C",
+    "jabengali": "\u099c",
+    "jadeva": "\u091c",
+    "jagujarati": "\u0a9c",
+    "jagurmukhi": "\u0a1c",
     "jbopomofo": "\u3110",
-    "jcaron": "\u01F0",
-    "jcircle": "\u24D9",
+    "jcaron": "\u01f0",
+    "jcircle": "\u24d9",
     "jcircumflex": "\u0135",
-    "jcrossedtail": "\u029D",
-    "jdotlessstroke": "\u025F",
+    "jcrossedtail": "\u029d",
+    "jdotlessstroke": "\u025f",
     "jecyrillic": "\u0458",
-    "jeemarabic": "\u062C",
-    "jeemfinalarabic": "\uFE9E",
-    "jeeminitialarabic": "\uFE9F",
-    "jeemmedialarabic": "\uFEA0",
+    "jeemarabic": "\u062c",
+    "jeemfinalarabic": "\ufe9e",
+    "jeeminitialarabic": "\ufe9f",
+    "jeemmedialarabic": "\ufea0",
     "jeharabic": "\u0698",
-    "jehfinalarabic": "\uFB8B",
-    "jhabengali": "\u099D",
-    "jhadeva": "\u091D",
-    "jhagujarati": "\u0A9D",
-    "jhagurmukhi": "\u0A1D",
-    "jheharmenian": "\u057B",
+    "jehfinalarabic": "\ufb8b",
+    "jhabengali": "\u099d",
+    "jhadeva": "\u091d",
+    "jhagujarati": "\u0a9d",
+    "jhagurmukhi": "\u0a1d",
+    "jheharmenian": "\u057b",
     "jis": "\u3004",
-    "jmonospace": "\uFF4A",
-    "jparen": "\u24A5",
-    "jsuperior": "\u02B2",
-    "k": "\u006B",
-    "kabashkircyrillic": "\u04A1",
+    "jmonospace": "\uff4a",
+    "jparen": "\u24a5",
+    "jsuperior": "\u02b2",
+    "k": "\u006b",
+    "kabashkircyrillic": "\u04a1",
     "kabengali": "\u0995",
-    "kacute": "\u1E31",
-    "kacyrillic": "\u043A",
-    "kadescendercyrillic": "\u049B",
+    "kacute": "\u1e31",
+    "kacyrillic": "\u043a",
+    "kadescendercyrillic": "\u049b",
     "kadeva": "\u0915",
-    "kaf": "\u05DB",
+    "kaf": "\u05db",
     "kafarabic": "\u0643",
-    "kafdagesh": "\uFB3B",
-    "kafdageshhebrew": "\uFB3B",
-    "kaffinalarabic": "\uFEDA",
-    "kafhebrew": "\u05DB",
-    "kafinitialarabic": "\uFEDB",
-    "kafmedialarabic": "\uFEDC",
-    "kafrafehebrew": "\uFB4D",
-    "kagujarati": "\u0A95",
-    "kagurmukhi": "\u0A15",
-    "kahiragana": "\u304B",
-    "kahookcyrillic": "\u04C4",
-    "kakatakana": "\u30AB",
-    "kakatakanahalfwidth": "\uFF76",
-    "kappa": "\u03BA",
-    "kappasymbolgreek": "\u03F0",
+    "kafdagesh": "\ufb3b",
+    "kafdageshhebrew": "\ufb3b",
+    "kaffinalarabic": "\ufeda",
+    "kafhebrew": "\u05db",
+    "kafinitialarabic": "\ufedb",
+    "kafmedialarabic": "\ufedc",
+    "kafrafehebrew": "\ufb4d",
+    "kagujarati": "\u0a95",
+    "kagurmukhi": "\u0a15",
+    "kahiragana": "\u304b",
+    "kahookcyrillic": "\u04c4",
+    "kakatakana": "\u30ab",
+    "kakatakanahalfwidth": "\uff76",
+    "kappa": "\u03ba",
+    "kappasymbolgreek": "\u03f0",
     "kapyeounmieumkorean": "\u3171",
     "kapyeounphieuphkorean": "\u3184",
     "kapyeounpieupkorean": "\u3178",
     "kapyeounssangpieupkorean": "\u3179",
-    "karoriisquare": "\u330D",
+    "karoriisquare": "\u330d",
     "kashidaautoarabic": "\u0640",
     "kashidaautonosidebearingarabic": "\u0640",
-    "kasmallkatakana": "\u30F5",
+    "kasmallkatakana": "\u30f5",
     "kasquare": "\u3384",
     "kasraarabic": "\u0650",
-    "kasratanarabic": "\u064D",
-    "kastrokecyrillic": "\u049F",
-    "katahiraprolongmarkhalfwidth": "\uFF70",
-    "kaverticalstrokecyrillic": "\u049D",
-    "kbopomofo": "\u310E",
+    "kasratanarabic": "\u064d",
+    "kastrokecyrillic": "\u049f",
+    "katahiraprolongmarkhalfwidth": "\uff70",
+    "kaverticalstrokecyrillic": "\u049d",
+    "kbopomofo": "\u310e",
     "kcalsquare": "\u3389",
-    "kcaron": "\u01E9",
+    "kcaron": "\u01e9",
     "kcedilla": "\u0137",
-    "kcircle": "\u24DA",
+    "kcircle": "\u24da",
     "kcommaaccent": "\u0137",
-    "kdotbelow": "\u1E33",
+    "kdotbelow": "\u1e33",
     "keharmenian": "\u0584",
     "kehiragana": "\u3051",
-    "kekatakana": "\u30B1",
-    "kekatakanahalfwidth": "\uFF79",
-    "kenarmenian": "\u056F",
-    "kesmallkatakana": "\u30F6",
+    "kekatakana": "\u30b1",
+    "kekatakanahalfwidth": "\uff79",
+    "kenarmenian": "\u056f",
+    "kesmallkatakana": "\u30f6",
     "kgreenlandic": "\u0138",
     "khabengali": "\u0996",
     "khacyrillic": "\u0445",
     "khadeva": "\u0916",
-    "khagujarati": "\u0A96",
-    "khagurmukhi": "\u0A16",
-    "khaharabic": "\u062E",
-    "khahfinalarabic": "\uFEA6",
-    "khahinitialarabic": "\uFEA7",
-    "khahmedialarabic": "\uFEA8",
-    "kheicoptic": "\u03E7",
+    "khagujarati": "\u0a96",
+    "khagurmukhi": "\u0a16",
+    "khaharabic": "\u062e",
+    "khahfinalarabic": "\ufea6",
+    "khahinitialarabic": "\ufea7",
+    "khahmedialarabic": "\ufea8",
+    "kheicoptic": "\u03e7",
     "khhadeva": "\u0959",
-    "khhagurmukhi": "\u0A59",
+    "khhagurmukhi": "\u0a59",
     "khieukhacirclekorean": "\u3278",
     "khieukhaparenkorean": "\u3218",
-    "khieukhcirclekorean": "\u326A",
-    "khieukhkorean": "\u314B",
-    "khieukhparenkorean": "\u320A",
-    "khokhaithai": "\u0E02",
-    "khokhonthai": "\u0E05",
-    "khokhuatthai": "\u0E03",
-    "khokhwaithai": "\u0E04",
-    "khomutthai": "\u0E5B",
+    "khieukhcirclekorean": "\u326a",
+    "khieukhkorean": "\u314b",
+    "khieukhparenkorean": "\u320a",
+    "khokhaithai": "\u0e02",
+    "khokhonthai": "\u0e05",
+    "khokhuatthai": "\u0e03",
+    "khokhwaithai": "\u0e04",
+    "khomutthai": "\u0e5b",
     "khook": "\u0199",
-    "khorakhangthai": "\u0E06",
+    "khorakhangthai": "\u0e06",
     "khzsquare": "\u3391",
-    "kihiragana": "\u304D",
-    "kikatakana": "\u30AD",
-    "kikatakanahalfwidth": "\uFF77",
+    "kihiragana": "\u304d",
+    "kikatakana": "\u30ad",
+    "kikatakanahalfwidth": "\uff77",
     "kiroguramusquare": "\u3315",
     "kiromeetorusquare": "\u3316",
     "kirosquare": "\u3314",
-    "kiyeokacirclekorean": "\u326E",
-    "kiyeokaparenkorean": "\u320E",
+    "kiyeokacirclekorean": "\u326e",
+    "kiyeokaparenkorean": "\u320e",
     "kiyeokcirclekorean": "\u3260",
     "kiyeokkorean": "\u3131",
     "kiyeokparenkorean": "\u3200",
     "kiyeoksioskorean": "\u3133",
-    "kjecyrillic": "\u045C",
-    "klinebelow": "\u1E35",
+    "kjecyrillic": "\u045c",
+    "klinebelow": "\u1e35",
     "klsquare": "\u3398",
-    "kmcubedsquare": "\u33A6",
-    "kmonospace": "\uFF4B",
-    "kmsquaredsquare": "\u33A2",
+    "kmcubedsquare": "\u33a6",
+    "kmonospace": "\uff4b",
+    "kmsquaredsquare": "\u33a2",
     "kohiragana": "\u3053",
-    "kohmsquare": "\u33C0",
-    "kokaithai": "\u0E01",
-    "kokatakana": "\u30B3",
-    "kokatakanahalfwidth": "\uFF7A",
-    "kooposquare": "\u331E",
+    "kohmsquare": "\u33c0",
+    "kokaithai": "\u0e01",
+    "kokatakana": "\u30b3",
+    "kokatakanahalfwidth": "\uff7a",
+    "kooposquare": "\u331e",
     "koppacyrillic": "\u0481",
-    "koreanstandardsymbol": "\u327F",
+    "koreanstandardsymbol": "\u327f",
     "koroniscmb": "\u0343",
-    "kparen": "\u24A6",
-    "kpasquare": "\u33AA",
-    "ksicyrillic": "\u046F",
-    "ktsquare": "\u33CF",
-    "kturned": "\u029E",
-    "kuhiragana": "\u304F",
-    "kukatakana": "\u30AF",
-    "kukatakanahalfwidth": "\uFF78",
-    "kvsquare": "\u33B8",
-    "kwsquare": "\u33BE",
-    "l": "\u006C",
-    "labengali": "\u09B2",
-    "lacute": "\u013A",
+    "kparen": "\u24a6",
+    "kpasquare": "\u33aa",
+    "ksicyrillic": "\u046f",
+    "ktsquare": "\u33cf",
+    "kturned": "\u029e",
+    "kuhiragana": "\u304f",
+    "kukatakana": "\u30af",
+    "kukatakanahalfwidth": "\uff78",
+    "kvsquare": "\u33b8",
+    "kwsquare": "\u33be",
+    "l": "\u006c",
+    "labengali": "\u09b2",
+    "lacute": "\u013a",
     "ladeva": "\u0932",
-    "lagujarati": "\u0AB2",
-    "lagurmukhi": "\u0A32",
-    "lakkhangyaothai": "\u0E45",
-    "lamaleffinalarabic": "\uFEFC",
-    "lamalefhamzaabovefinalarabic": "\uFEF8",
-    "lamalefhamzaaboveisolatedarabic": "\uFEF7",
-    "lamalefhamzabelowfinalarabic": "\uFEFA",
-    "lamalefhamzabelowisolatedarabic": "\uFEF9",
-    "lamalefisolatedarabic": "\uFEFB",
-    "lamalefmaddaabovefinalarabic": "\uFEF6",
-    "lamalefmaddaaboveisolatedarabic": "\uFEF5",
+    "lagujarati": "\u0ab2",
+    "lagurmukhi": "\u0a32",
+    "lakkhangyaothai": "\u0e45",
+    "lamaleffinalarabic": "\ufefc",
+    "lamalefhamzaabovefinalarabic": "\ufef8",
+    "lamalefhamzaaboveisolatedarabic": "\ufef7",
+    "lamalefhamzabelowfinalarabic": "\ufefa",
+    "lamalefhamzabelowisolatedarabic": "\ufef9",
+    "lamalefisolatedarabic": "\ufefb",
+    "lamalefmaddaabovefinalarabic": "\ufef6",
+    "lamalefmaddaaboveisolatedarabic": "\ufef5",
     "lamarabic": "\u0644",
-    "lambda": "\u03BB",
-    "lambdastroke": "\u019B",
-    "lamed": "\u05DC",
-    "lameddagesh": "\uFB3C",
-    "lameddageshhebrew": "\uFB3C",
-    "lamedhebrew": "\u05DC",
-    "lamedholam": "\u05DC\u05B9",
-    "lamedholamdagesh": "\u05DC\u05B9\u05BC",
-    "lamedholamdageshhebrew": "\u05DC\u05B9\u05BC",
-    "lamedholamhebrew": "\u05DC\u05B9",
-    "lamfinalarabic": "\uFEDE",
-    "lamhahinitialarabic": "\uFCCA",
-    "laminitialarabic": "\uFEDF",
-    "lamjeeminitialarabic": "\uFCC9",
-    "lamkhahinitialarabic": "\uFCCB",
-    "lamlamhehisolatedarabic": "\uFDF2",
-    "lammedialarabic": "\uFEE0",
-    "lammeemhahinitialarabic": "\uFD88",
-    "lammeeminitialarabic": "\uFCCC",
-    "lammeemjeeminitialarabic": "\uFEDF\uFEE4\uFEA0",
-    "lammeemkhahinitialarabic": "\uFEDF\uFEE4\uFEA8",
-    "largecircle": "\u25EF",
-    "lbar": "\u019A",
-    "lbelt": "\u026C",
-    "lbopomofo": "\u310C",
-    "lcaron": "\u013E",
-    "lcedilla": "\u013C",
-    "lcircle": "\u24DB",
-    "lcircumflexbelow": "\u1E3D",
-    "lcommaaccent": "\u013C",
+    "lambda": "\u03bb",
+    "lambdastroke": "\u019b",
+    "lamed": "\u05dc",
+    "lameddagesh": "\ufb3c",
+    "lameddageshhebrew": "\ufb3c",
+    "lamedhebrew": "\u05dc",
+    "lamedholam": "\u05dc\u05b9",
+    "lamedholamdagesh": "\u05dc\u05b9\u05bc",
+    "lamedholamdageshhebrew": "\u05dc\u05b9\u05bc",
+    "lamedholamhebrew": "\u05dc\u05b9",
+    "lamfinalarabic": "\ufede",
+    "lamhahinitialarabic": "\ufcca",
+    "laminitialarabic": "\ufedf",
+    "lamjeeminitialarabic": "\ufcc9",
+    "lamkhahinitialarabic": "\ufccb",
+    "lamlamhehisolatedarabic": "\ufdf2",
+    "lammedialarabic": "\ufee0",
+    "lammeemhahinitialarabic": "\ufd88",
+    "lammeeminitialarabic": "\ufccc",
+    "lammeemjeeminitialarabic": "\ufedf\ufee4\ufea0",
+    "lammeemkhahinitialarabic": "\ufedf\ufee4\ufea8",
+    "largecircle": "\u25ef",
+    "lbar": "\u019a",
+    "lbelt": "\u026c",
+    "lbopomofo": "\u310c",
+    "lcaron": "\u013e",
+    "lcedilla": "\u013c",
+    "lcircle": "\u24db",
+    "lcircumflexbelow": "\u1e3d",
+    "lcommaaccent": "\u013c",
     "ldot": "\u0140",
     "ldotaccent": "\u0140",
-    "ldotbelow": "\u1E37",
-    "ldotbelowmacron": "\u1E39",
-    "leftangleabovecmb": "\u031A",
+    "ldotbelow": "\u1e37",
+    "ldotbelowmacron": "\u1e39",
+    "leftangleabovecmb": "\u031a",
     "lefttackbelowcmb": "\u0318",
-    "less": "\u003C",
+    "less": "\u003c",
     "lessequal": "\u2264",
-    "lessequalorgreater": "\u22DA",
-    "lessmonospace": "\uFF1C",
+    "lessequalorgreater": "\u22da",
+    "lessmonospace": "\uff1c",
     "lessorequivalent": "\u2272",
     "lessorgreater": "\u2276",
     "lessoverequal": "\u2266",
-    "lesssmall": "\uFE64",
-    "lezh": "\u026E",
-    "lfblock": "\u258C",
-    "lhookretroflex": "\u026D",
-    "lira": "\u20A4",
-    "liwnarmenian": "\u056C",
-    "lj": "\u01C9",
+    "lesssmall": "\ufe64",
+    "lezh": "\u026e",
+    "lfblock": "\u258c",
+    "lhookretroflex": "\u026d",
+    "lira": "\u20a4",
+    "liwnarmenian": "\u056c",
+    "lj": "\u01c9",
     "ljecyrillic": "\u0459",
-    "ll": "\uF6C0",
+    "ll": "\uf6c0",
     "lladeva": "\u0933",
-    "llagujarati": "\u0AB3",
-    "llinebelow": "\u1E3B",
+    "llagujarati": "\u0ab3",
+    "llinebelow": "\u1e3b",
     "llladeva": "\u0934",
-    "llvocalicbengali": "\u09E1",
+    "llvocalicbengali": "\u09e1",
     "llvocalicdeva": "\u0961",
-    "llvocalicvowelsignbengali": "\u09E3",
+    "llvocalicvowelsignbengali": "\u09e3",
     "llvocalicvowelsigndeva": "\u0963",
-    "lmiddletilde": "\u026B",
-    "lmonospace": "\uFF4C",
-    "lmsquare": "\u33D0",
-    "lochulathai": "\u0E2C",
+    "lmiddletilde": "\u026b",
+    "lmonospace": "\uff4c",
+    "lmsquare": "\u33d0",
+    "lochulathai": "\u0e2c",
     "logicaland": "\u2227",
-    "logicalnot": "\u00AC",
+    "logicalnot": "\u00ac",
     "logicalnotreversed": "\u2310",
     "logicalor": "\u2228",
-    "lolingthai": "\u0E25",
-    "longs": "\u017F",
-    "lowlinecenterline": "\uFE4E",
+    "lolingthai": "\u0e25",
+    "longs": "\u017f",
+    "lowlinecenterline": "\ufe4e",
     "lowlinecmb": "\u0332",
-    "lowlinedashed": "\uFE4D",
-    "lozenge": "\u25CA",
-    "lparen": "\u24A7",
+    "lowlinedashed": "\ufe4d",
+    "lozenge": "\u25ca",
+    "lparen": "\u24a7",
     "lslash": "\u0142",
     "lsquare": "\u2113",
-    "lsuperior": "\uF6EE",
+    "lsuperior": "\uf6ee",
     "ltshade": "\u2591",
-    "luthai": "\u0E26",
-    "lvocalicbengali": "\u098C",
-    "lvocalicdeva": "\u090C",
-    "lvocalicvowelsignbengali": "\u09E2",
+    "luthai": "\u0e26",
+    "lvocalicbengali": "\u098c",
+    "lvocalicdeva": "\u090c",
+    "lvocalicvowelsignbengali": "\u09e2",
     "lvocalicvowelsigndeva": "\u0962",
-    "lxsquare": "\u33D3",
-    "m": "\u006D",
-    "mabengali": "\u09AE",
-    "macron": "\u00AF",
+    "lxsquare": "\u33d3",
+    "m": "\u006d",
+    "mabengali": "\u09ae",
+    "macron": "\u00af",
     "macronbelowcmb": "\u0331",
     "macroncmb": "\u0304",
-    "macronlowmod": "\u02CD",
-    "macronmonospace": "\uFFE3",
-    "macute": "\u1E3F",
-    "madeva": "\u092E",
-    "magujarati": "\u0AAE",
-    "magurmukhi": "\u0A2E",
-    "mahapakhhebrew": "\u05A4",
-    "mahapakhlefthebrew": "\u05A4",
-    "mahiragana": "\u307E",
-    "maichattawalowleftthai": "\uF895",
-    "maichattawalowrightthai": "\uF894",
-    "maichattawathai": "\u0E4B",
-    "maichattawaupperleftthai": "\uF893",
-    "maieklowleftthai": "\uF88C",
-    "maieklowrightthai": "\uF88B",
-    "maiekthai": "\u0E48",
-    "maiekupperleftthai": "\uF88A",
-    "maihanakatleftthai": "\uF884",
-    "maihanakatthai": "\u0E31",
-    "maitaikhuleftthai": "\uF889",
-    "maitaikhuthai": "\u0E47",
-    "maitholowleftthai": "\uF88F",
-    "maitholowrightthai": "\uF88E",
-    "maithothai": "\u0E49",
-    "maithoupperleftthai": "\uF88D",
-    "maitrilowleftthai": "\uF892",
-    "maitrilowrightthai": "\uF891",
-    "maitrithai": "\u0E4A",
-    "maitriupperleftthai": "\uF890",
-    "maiyamokthai": "\u0E46",
-    "makatakana": "\u30DE",
-    "makatakanahalfwidth": "\uFF8F",
+    "macronlowmod": "\u02cd",
+    "macronmonospace": "\uffe3",
+    "macute": "\u1e3f",
+    "madeva": "\u092e",
+    "magujarati": "\u0aae",
+    "magurmukhi": "\u0a2e",
+    "mahapakhhebrew": "\u05a4",
+    "mahapakhlefthebrew": "\u05a4",
+    "mahiragana": "\u307e",
+    "maichattawalowleftthai": "\uf895",
+    "maichattawalowrightthai": "\uf894",
+    "maichattawathai": "\u0e4b",
+    "maichattawaupperleftthai": "\uf893",
+    "maieklowleftthai": "\uf88c",
+    "maieklowrightthai": "\uf88b",
+    "maiekthai": "\u0e48",
+    "maiekupperleftthai": "\uf88a",
+    "maihanakatleftthai": "\uf884",
+    "maihanakatthai": "\u0e31",
+    "maitaikhuleftthai": "\uf889",
+    "maitaikhuthai": "\u0e47",
+    "maitholowleftthai": "\uf88f",
+    "maitholowrightthai": "\uf88e",
+    "maithothai": "\u0e49",
+    "maithoupperleftthai": "\uf88d",
+    "maitrilowleftthai": "\uf892",
+    "maitrilowrightthai": "\uf891",
+    "maitrithai": "\u0e4a",
+    "maitriupperleftthai": "\uf890",
+    "maiyamokthai": "\u0e46",
+    "makatakana": "\u30de",
+    "makatakanahalfwidth": "\uff8f",
     "male": "\u2642",
     "mansyonsquare": "\u3347",
-    "maqafhebrew": "\u05BE",
+    "maqafhebrew": "\u05be",
     "mars": "\u2642",
-    "masoracirclehebrew": "\u05AF",
+    "masoracirclehebrew": "\u05af",
     "masquare": "\u3383",
     "mbopomofo": "\u3107",
-    "mbsquare": "\u33D4",
-    "mcircle": "\u24DC",
-    "mcubedsquare": "\u33A5",
-    "mdotaccent": "\u1E41",
-    "mdotbelow": "\u1E43",
+    "mbsquare": "\u33d4",
+    "mcircle": "\u24dc",
+    "mcubedsquare": "\u33a5",
+    "mdotaccent": "\u1e41",
+    "mdotbelow": "\u1e43",
     "meemarabic": "\u0645",
-    "meemfinalarabic": "\uFEE2",
-    "meeminitialarabic": "\uFEE3",
-    "meemmedialarabic": "\uFEE4",
-    "meemmeeminitialarabic": "\uFCD1",
-    "meemmeemisolatedarabic": "\uFC48",
-    "meetorusquare": "\u334D",
+    "meemfinalarabic": "\ufee2",
+    "meeminitialarabic": "\ufee3",
+    "meemmedialarabic": "\ufee4",
+    "meemmeeminitialarabic": "\ufcd1",
+    "meemmeemisolatedarabic": "\ufc48",
+    "meetorusquare": "\u334d",
     "mehiragana": "\u3081",
-    "meizierasquare": "\u337E",
-    "mekatakana": "\u30E1",
-    "mekatakanahalfwidth": "\uFF92",
-    "mem": "\u05DE",
-    "memdagesh": "\uFB3E",
-    "memdageshhebrew": "\uFB3E",
-    "memhebrew": "\u05DE",
+    "meizierasquare": "\u337e",
+    "mekatakana": "\u30e1",
+    "mekatakanahalfwidth": "\uff92",
+    "mem": "\u05de",
+    "memdagesh": "\ufb3e",
+    "memdageshhebrew": "\ufb3e",
+    "memhebrew": "\u05de",
     "menarmenian": "\u0574",
-    "merkhahebrew": "\u05A5",
-    "merkhakefulahebrew": "\u05A6",
-    "merkhakefulalefthebrew": "\u05A6",
-    "merkhalefthebrew": "\u05A5",
+    "merkhahebrew": "\u05a5",
+    "merkhakefulahebrew": "\u05a6",
+    "merkhakefulalefthebrew": "\u05a6",
+    "merkhalefthebrew": "\u05a5",
     "mhook": "\u0271",
     "mhzsquare": "\u3392",
-    "middledotkatakanahalfwidth": "\uFF65",
-    "middot": "\u00B7",
+    "middledotkatakanahalfwidth": "\uff65",
+    "middot": "\u00b7",
     "mieumacirclekorean": "\u3272",
     "mieumaparenkorean": "\u3212",
     "mieumcirclekorean": "\u3264",
     "mieumkorean": "\u3141",
     "mieumpansioskorean": "\u3170",
     "mieumparenkorean": "\u3204",
-    "mieumpieupkorean": "\u316E",
-    "mieumsioskorean": "\u316F",
-    "mihiragana": "\u307F",
-    "mikatakana": "\u30DF",
-    "mikatakanahalfwidth": "\uFF90",
+    "mieumpieupkorean": "\u316e",
+    "mieumsioskorean": "\u316f",
+    "mihiragana": "\u307f",
+    "mikatakana": "\u30df",
+    "mikatakanahalfwidth": "\uff90",
     "minus": "\u2212",
     "minusbelowcmb": "\u0320",
     "minuscircle": "\u2296",
-    "minusmod": "\u02D7",
+    "minusmod": "\u02d7",
     "minusplus": "\u2213",
     "minute": "\u2032",
-    "miribaarusquare": "\u334A",
+    "miribaarusquare": "\u334a",
     "mirisquare": "\u3349",
     "mlonglegturned": "\u0270",
     "mlsquare": "\u3396",
-    "mmcubedsquare": "\u33A3",
-    "mmonospace": "\uFF4D",
-    "mmsquaredsquare": "\u339F",
+    "mmcubedsquare": "\u33a3",
+    "mmonospace": "\uff4d",
+    "mmsquaredsquare": "\u339f",
     "mohiragana": "\u3082",
-    "mohmsquare": "\u33C1",
-    "mokatakana": "\u30E2",
-    "mokatakanahalfwidth": "\uFF93",
-    "molsquare": "\u33D6",
-    "momathai": "\u0E21",
-    "moverssquare": "\u33A7",
-    "moverssquaredsquare": "\u33A8",
-    "mparen": "\u24A8",
-    "mpasquare": "\u33AB",
-    "mssquare": "\u33B3",
-    "msuperior": "\uF6EF",
-    "mturned": "\u026F",
-    "mu": "\u00B5",
-    "mu1": "\u00B5",
+    "mohmsquare": "\u33c1",
+    "mokatakana": "\u30e2",
+    "mokatakanahalfwidth": "\uff93",
+    "molsquare": "\u33d6",
+    "momathai": "\u0e21",
+    "moverssquare": "\u33a7",
+    "moverssquaredsquare": "\u33a8",
+    "mparen": "\u24a8",
+    "mpasquare": "\u33ab",
+    "mssquare": "\u33b3",
+    "msuperior": "\uf6ef",
+    "mturned": "\u026f",
+    "mu": "\u00b5",
+    "mu1": "\u00b5",
     "muasquare": "\u3382",
-    "muchgreater": "\u226B",
-    "muchless": "\u226A",
-    "mufsquare": "\u338C",
-    "mugreek": "\u03BC",
-    "mugsquare": "\u338D",
+    "muchgreater": "\u226b",
+    "muchless": "\u226a",
+    "mufsquare": "\u338c",
+    "mugreek": "\u03bc",
+    "mugsquare": "\u338d",
     "muhiragana": "\u3080",
-    "mukatakana": "\u30E0",
-    "mukatakanahalfwidth": "\uFF91",
+    "mukatakana": "\u30e0",
+    "mukatakanahalfwidth": "\uff91",
     "mulsquare": "\u3395",
-    "multiply": "\u00D7",
-    "mumsquare": "\u339B",
-    "munahhebrew": "\u05A3",
-    "munahlefthebrew": "\u05A3",
-    "musicalnote": "\u266A",
-    "musicalnotedbl": "\u266B",
-    "musicflatsign": "\u266D",
-    "musicsharpsign": "\u266F",
-    "mussquare": "\u33B2",
-    "muvsquare": "\u33B6",
-    "muwsquare": "\u33BC",
-    "mvmegasquare": "\u33B9",
-    "mvsquare": "\u33B7",
-    "mwmegasquare": "\u33BF",
-    "mwsquare": "\u33BD",
-    "n": "\u006E",
-    "nabengali": "\u09A8",
+    "multiply": "\u00d7",
+    "mumsquare": "\u339b",
+    "munahhebrew": "\u05a3",
+    "munahlefthebrew": "\u05a3",
+    "musicalnote": "\u266a",
+    "musicalnotedbl": "\u266b",
+    "musicflatsign": "\u266d",
+    "musicsharpsign": "\u266f",
+    "mussquare": "\u33b2",
+    "muvsquare": "\u33b6",
+    "muwsquare": "\u33bc",
+    "mvmegasquare": "\u33b9",
+    "mvsquare": "\u33b7",
+    "mwmegasquare": "\u33bf",
+    "mwsquare": "\u33bd",
+    "n": "\u006e",
+    "nabengali": "\u09a8",
     "nabla": "\u2207",
     "nacute": "\u0144",
     "nadeva": "\u0928",
-    "nagujarati": "\u0AA8",
-    "nagurmukhi": "\u0A28",
-    "nahiragana": "\u306A",
-    "nakatakana": "\u30CA",
-    "nakatakanahalfwidth": "\uFF85",
+    "nagujarati": "\u0aa8",
+    "nagurmukhi": "\u0a28",
+    "nahiragana": "\u306a",
+    "nakatakana": "\u30ca",
+    "nakatakanahalfwidth": "\uff85",
     "napostrophe": "\u0149",
     "nasquare": "\u3381",
-    "nbopomofo": "\u310B",
-    "nbspace": "\u00A0",
+    "nbopomofo": "\u310b",
+    "nbspace": "\u00a0",
     "ncaron": "\u0148",
     "ncedilla": "\u0146",
-    "ncircle": "\u24DD",
-    "ncircumflexbelow": "\u1E4B",
+    "ncircle": "\u24dd",
+    "ncircumflexbelow": "\u1e4b",
     "ncommaaccent": "\u0146",
-    "ndotaccent": "\u1E45",
-    "ndotbelow": "\u1E47",
-    "nehiragana": "\u306D",
-    "nekatakana": "\u30CD",
-    "nekatakanahalfwidth": "\uFF88",
-    "newsheqelsign": "\u20AA",
-    "nfsquare": "\u338B",
+    "ndotaccent": "\u1e45",
+    "ndotbelow": "\u1e47",
+    "nehiragana": "\u306d",
+    "nekatakana": "\u30cd",
+    "nekatakanahalfwidth": "\uff88",
+    "newsheqelsign": "\u20aa",
+    "nfsquare": "\u338b",
     "ngabengali": "\u0999",
     "ngadeva": "\u0919",
-    "ngagujarati": "\u0A99",
-    "ngagurmukhi": "\u0A19",
-    "ngonguthai": "\u0E07",
+    "ngagujarati": "\u0a99",
+    "ngagurmukhi": "\u0a19",
+    "ngonguthai": "\u0e07",
     "nhiragana": "\u3093",
     "nhookleft": "\u0272",
     "nhookretroflex": "\u0273",
-    "nieunacirclekorean": "\u326F",
-    "nieunaparenkorean": "\u320F",
+    "nieunacirclekorean": "\u326f",
+    "nieunaparenkorean": "\u320f",
     "nieuncieuckorean": "\u3135",
     "nieuncirclekorean": "\u3261",
     "nieunhieuhkorean": "\u3136",
@@ -2810,74 +2810,74 @@ def convert_glyphlist(path: str) -> None:
     "nieunparenkorean": "\u3201",
     "nieunsioskorean": "\u3167",
     "nieuntikeutkorean": "\u3166",
-    "nihiragana": "\u306B",
-    "nikatakana": "\u30CB",
-    "nikatakanahalfwidth": "\uFF86",
-    "nikhahitleftthai": "\uF899",
-    "nikhahitthai": "\u0E4D",
+    "nihiragana": "\u306b",
+    "nikatakana": "\u30cb",
+    "nikatakanahalfwidth": "\uff86",
+    "nikhahitleftthai": "\uf899",
+    "nikhahitthai": "\u0e4d",
     "nine": "\u0039",
     "ninearabic": "\u0669",
-    "ninebengali": "\u09EF",
+    "ninebengali": "\u09ef",
     "ninecircle": "\u2468",
     "ninecircleinversesansserif": "\u2792",
-    "ninedeva": "\u096F",
-    "ninegujarati": "\u0AEF",
-    "ninegurmukhi": "\u0A6F",
+    "ninedeva": "\u096f",
+    "ninegujarati": "\u0aef",
+    "ninegurmukhi": "\u0a6f",
     "ninehackarabic": "\u0669",
     "ninehangzhou": "\u3029",
     "nineideographicparen": "\u3228",
     "nineinferior": "\u2089",
-    "ninemonospace": "\uFF19",
-    "nineoldstyle": "\uF739",
-    "nineparen": "\u247C",
+    "ninemonospace": "\uff19",
+    "nineoldstyle": "\uf739",
+    "nineparen": "\u247c",
     "nineperiod": "\u2490",
-    "ninepersian": "\u06F9",
+    "ninepersian": "\u06f9",
     "nineroman": "\u2178",
     "ninesuperior": "\u2079",
     "nineteencircle": "\u2472",
     "nineteenparen": "\u2486",
-    "nineteenperiod": "\u249A",
-    "ninethai": "\u0E59",
-    "nj": "\u01CC",
-    "njecyrillic": "\u045A",
-    "nkatakana": "\u30F3",
-    "nkatakanahalfwidth": "\uFF9D",
-    "nlegrightlong": "\u019E",
-    "nlinebelow": "\u1E49",
-    "nmonospace": "\uFF4E",
-    "nmsquare": "\u339A",
-    "nnabengali": "\u09A3",
+    "nineteenperiod": "\u249a",
+    "ninethai": "\u0e59",
+    "nj": "\u01cc",
+    "njecyrillic": "\u045a",
+    "nkatakana": "\u30f3",
+    "nkatakanahalfwidth": "\uff9d",
+    "nlegrightlong": "\u019e",
+    "nlinebelow": "\u1e49",
+    "nmonospace": "\uff4e",
+    "nmsquare": "\u339a",
+    "nnabengali": "\u09a3",
     "nnadeva": "\u0923",
-    "nnagujarati": "\u0AA3",
-    "nnagurmukhi": "\u0A23",
+    "nnagujarati": "\u0aa3",
+    "nnagurmukhi": "\u0a23",
     "nnnadeva": "\u0929",
-    "nohiragana": "\u306E",
-    "nokatakana": "\u30CE",
-    "nokatakanahalfwidth": "\uFF89",
-    "nonbreakingspace": "\u00A0",
-    "nonenthai": "\u0E13",
-    "nonuthai": "\u0E19",
+    "nohiragana": "\u306e",
+    "nokatakana": "\u30ce",
+    "nokatakanahalfwidth": "\uff89",
+    "nonbreakingspace": "\u00a0",
+    "nonenthai": "\u0e13",
+    "nonuthai": "\u0e19",
     "noonarabic": "\u0646",
-    "noonfinalarabic": "\uFEE6",
-    "noonghunnaarabic": "\u06BA",
-    "noonghunnafinalarabic": "\uFB9F",
-    "noonhehinitialarabic": "\uFEE7\uFEEC",
-    "nooninitialarabic": "\uFEE7",
-    "noonjeeminitialarabic": "\uFCD2",
-    "noonjeemisolatedarabic": "\uFC4B",
-    "noonmedialarabic": "\uFEE8",
-    "noonmeeminitialarabic": "\uFCD5",
-    "noonmeemisolatedarabic": "\uFC4E",
-    "noonnoonfinalarabic": "\uFC8D",
-    "notcontains": "\u220C",
+    "noonfinalarabic": "\ufee6",
+    "noonghunnaarabic": "\u06ba",
+    "noonghunnafinalarabic": "\ufb9f",
+    "noonhehinitialarabic": "\ufee7\ufeec",
+    "nooninitialarabic": "\ufee7",
+    "noonjeeminitialarabic": "\ufcd2",
+    "noonjeemisolatedarabic": "\ufc4b",
+    "noonmedialarabic": "\ufee8",
+    "noonmeeminitialarabic": "\ufcd5",
+    "noonmeemisolatedarabic": "\ufc4e",
+    "noonnoonfinalarabic": "\ufc8d",
+    "notcontains": "\u220c",
     "notelement": "\u2209",
     "notelementof": "\u2209",
     "notequal": "\u2260",
-    "notgreater": "\u226F",
+    "notgreater": "\u226f",
     "notgreaternorequal": "\u2271",
     "notgreaternorless": "\u2279",
     "notidentical": "\u2262",
-    "notless": "\u226E",
+    "notless": "\u226e",
     "notlessnorequal": "\u2270",
     "notparallel": "\u2226",
     "notprecedes": "\u2280",
@@ -2885,267 +2885,267 @@ def convert_glyphlist(path: str) -> None:
     "notsucceeds": "\u2281",
     "notsuperset": "\u2285",
     "nowarmenian": "\u0576",
-    "nparen": "\u24A9",
-    "nssquare": "\u33B1",
-    "nsuperior": "\u207F",
-    "ntilde": "\u00F1",
-    "nu": "\u03BD",
-    "nuhiragana": "\u306C",
-    "nukatakana": "\u30CC",
-    "nukatakanahalfwidth": "\uFF87",
-    "nuktabengali": "\u09BC",
-    "nuktadeva": "\u093C",
-    "nuktagujarati": "\u0ABC",
-    "nuktagurmukhi": "\u0A3C",
+    "nparen": "\u24a9",
+    "nssquare": "\u33b1",
+    "nsuperior": "\u207f",
+    "ntilde": "\u00f1",
+    "nu": "\u03bd",
+    "nuhiragana": "\u306c",
+    "nukatakana": "\u30cc",
+    "nukatakanahalfwidth": "\uff87",
+    "nuktabengali": "\u09bc",
+    "nuktadeva": "\u093c",
+    "nuktagujarati": "\u0abc",
+    "nuktagurmukhi": "\u0a3c",
     "numbersign": "\u0023",
-    "numbersignmonospace": "\uFF03",
-    "numbersignsmall": "\uFE5F",
+    "numbersignmonospace": "\uff03",
+    "numbersignsmall": "\ufe5f",
     "numeralsigngreek": "\u0374",
     "numeralsignlowergreek": "\u0375",
     "numero": "\u2116",
-    "nun": "\u05E0",
-    "nundagesh": "\uFB40",
-    "nundageshhebrew": "\uFB40",
-    "nunhebrew": "\u05E0",
-    "nvsquare": "\u33B5",
-    "nwsquare": "\u33BB",
-    "nyabengali": "\u099E",
-    "nyadeva": "\u091E",
-    "nyagujarati": "\u0A9E",
-    "nyagurmukhi": "\u0A1E",
-    "o": "\u006F",
-    "oacute": "\u00F3",
-    "oangthai": "\u0E2D",
+    "nun": "\u05e0",
+    "nundagesh": "\ufb40",
+    "nundageshhebrew": "\ufb40",
+    "nunhebrew": "\u05e0",
+    "nvsquare": "\u33b5",
+    "nwsquare": "\u33bb",
+    "nyabengali": "\u099e",
+    "nyadeva": "\u091e",
+    "nyagujarati": "\u0a9e",
+    "nyagurmukhi": "\u0a1e",
+    "o": "\u006f",
+    "oacute": "\u00f3",
+    "oangthai": "\u0e2d",
     "obarred": "\u0275",
-    "obarredcyrillic": "\u04E9",
-    "obarreddieresiscyrillic": "\u04EB",
+    "obarredcyrillic": "\u04e9",
+    "obarreddieresiscyrillic": "\u04eb",
     "obengali": "\u0993",
-    "obopomofo": "\u311B",
-    "obreve": "\u014F",
+    "obopomofo": "\u311b",
+    "obreve": "\u014f",
     "ocandradeva": "\u0911",
-    "ocandragujarati": "\u0A91",
+    "ocandragujarati": "\u0a91",
     "ocandravowelsigndeva": "\u0949",
-    "ocandravowelsigngujarati": "\u0AC9",
-    "ocaron": "\u01D2",
-    "ocircle": "\u24DE",
-    "ocircumflex": "\u00F4",
-    "ocircumflexacute": "\u1ED1",
-    "ocircumflexdotbelow": "\u1ED9",
-    "ocircumflexgrave": "\u1ED3",
-    "ocircumflexhookabove": "\u1ED5",
-    "ocircumflextilde": "\u1ED7",
-    "ocyrillic": "\u043E",
+    "ocandravowelsigngujarati": "\u0ac9",
+    "ocaron": "\u01d2",
+    "ocircle": "\u24de",
+    "ocircumflex": "\u00f4",
+    "ocircumflexacute": "\u1ed1",
+    "ocircumflexdotbelow": "\u1ed9",
+    "ocircumflexgrave": "\u1ed3",
+    "ocircumflexhookabove": "\u1ed5",
+    "ocircumflextilde": "\u1ed7",
+    "ocyrillic": "\u043e",
     "odblacute": "\u0151",
-    "odblgrave": "\u020D",
+    "odblgrave": "\u020d",
     "odeva": "\u0913",
-    "odieresis": "\u00F6",
-    "odieresiscyrillic": "\u04E7",
-    "odotbelow": "\u1ECD",
+    "odieresis": "\u00f6",
+    "odieresiscyrillic": "\u04e7",
+    "odotbelow": "\u1ecd",
     "oe": "\u0153",
-    "oekorean": "\u315A",
-    "ogonek": "\u02DB",
+    "oekorean": "\u315a",
+    "ogonek": "\u02db",
     "ogonekcmb": "\u0328",
-    "ograve": "\u00F2",
-    "ogujarati": "\u0A93",
+    "ograve": "\u00f2",
+    "ogujarati": "\u0a93",
     "oharmenian": "\u0585",
-    "ohiragana": "\u304A",
-    "ohookabove": "\u1ECF",
-    "ohorn": "\u01A1",
-    "ohornacute": "\u1EDB",
-    "ohorndotbelow": "\u1EE3",
-    "ohorngrave": "\u1EDD",
-    "ohornhookabove": "\u1EDF",
-    "ohorntilde": "\u1EE1",
+    "ohiragana": "\u304a",
+    "ohookabove": "\u1ecf",
+    "ohorn": "\u01a1",
+    "ohornacute": "\u1edb",
+    "ohorndotbelow": "\u1ee3",
+    "ohorngrave": "\u1edd",
+    "ohornhookabove": "\u1edf",
+    "ohorntilde": "\u1ee1",
     "ohungarumlaut": "\u0151",
-    "oi": "\u01A3",
-    "oinvertedbreve": "\u020F",
-    "okatakana": "\u30AA",
-    "okatakanahalfwidth": "\uFF75",
+    "oi": "\u01a3",
+    "oinvertedbreve": "\u020f",
+    "okatakana": "\u30aa",
+    "okatakanahalfwidth": "\uff75",
     "okorean": "\u3157",
-    "olehebrew": "\u05AB",
-    "omacron": "\u014D",
-    "omacronacute": "\u1E53",
-    "omacrongrave": "\u1E51",
+    "olehebrew": "\u05ab",
+    "omacron": "\u014d",
+    "omacronacute": "\u1e53",
+    "omacrongrave": "\u1e51",
     "omdeva": "\u0950",
-    "omega": "\u03C9",
-    "omega1": "\u03D6",
+    "omega": "\u03c9",
+    "omega1": "\u03d6",
     "omegacyrillic": "\u0461",
     "omegalatinclosed": "\u0277",
-    "omegaroundcyrillic": "\u047B",
-    "omegatitlocyrillic": "\u047D",
-    "omegatonos": "\u03CE",
-    "omgujarati": "\u0AD0",
-    "omicron": "\u03BF",
-    "omicrontonos": "\u03CC",
-    "omonospace": "\uFF4F",
+    "omegaroundcyrillic": "\u047b",
+    "omegatitlocyrillic": "\u047d",
+    "omegatonos": "\u03ce",
+    "omgujarati": "\u0ad0",
+    "omicron": "\u03bf",
+    "omicrontonos": "\u03cc",
+    "omonospace": "\uff4f",
     "one": "\u0031",
     "onearabic": "\u0661",
-    "onebengali": "\u09E7",
+    "onebengali": "\u09e7",
     "onecircle": "\u2460",
-    "onecircleinversesansserif": "\u278A",
+    "onecircleinversesansserif": "\u278a",
     "onedeva": "\u0967",
     "onedotenleader": "\u2024",
-    "oneeighth": "\u215B",
-    "onefitted": "\uF6DC",
-    "onegujarati": "\u0AE7",
-    "onegurmukhi": "\u0A67",
+    "oneeighth": "\u215b",
+    "onefitted": "\uf6dc",
+    "onegujarati": "\u0ae7",
+    "onegurmukhi": "\u0a67",
     "onehackarabic": "\u0661",
-    "onehalf": "\u00BD",
+    "onehalf": "\u00bd",
     "onehangzhou": "\u3021",
     "oneideographicparen": "\u3220",
     "oneinferior": "\u2081",
-    "onemonospace": "\uFF11",
-    "onenumeratorbengali": "\u09F4",
-    "oneoldstyle": "\uF731",
+    "onemonospace": "\uff11",
+    "onenumeratorbengali": "\u09f4",
+    "oneoldstyle": "\uf731",
     "oneparen": "\u2474",
     "oneperiod": "\u2488",
-    "onepersian": "\u06F1",
-    "onequarter": "\u00BC",
+    "onepersian": "\u06f1",
+    "onequarter": "\u00bc",
     "oneroman": "\u2170",
-    "onesuperior": "\u00B9",
-    "onethai": "\u0E51",
+    "onesuperior": "\u00b9",
+    "onethai": "\u0e51",
     "onethird": "\u2153",
-    "oogonek": "\u01EB",
-    "oogonekmacron": "\u01ED",
-    "oogurmukhi": "\u0A13",
-    "oomatragurmukhi": "\u0A4B",
+    "oogonek": "\u01eb",
+    "oogonekmacron": "\u01ed",
+    "oogurmukhi": "\u0a13",
+    "oomatragurmukhi": "\u0a4b",
     "oopen": "\u0254",
-    "oparen": "\u24AA",
-    "openbullet": "\u25E6",
+    "oparen": "\u24aa",
+    "openbullet": "\u25e6",
     "option": "\u2325",
-    "ordfeminine": "\u00AA",
-    "ordmasculine": "\u00BA",
-    "orthogonal": "\u221F",
+    "ordfeminine": "\u00aa",
+    "ordmasculine": "\u00ba",
+    "orthogonal": "\u221f",
     "oshortdeva": "\u0912",
-    "oshortvowelsigndeva": "\u094A",
-    "oslash": "\u00F8",
-    "oslashacute": "\u01FF",
+    "oshortvowelsigndeva": "\u094a",
+    "oslash": "\u00f8",
+    "oslashacute": "\u01ff",
     "osmallhiragana": "\u3049",
-    "osmallkatakana": "\u30A9",
-    "osmallkatakanahalfwidth": "\uFF6B",
-    "ostrokeacute": "\u01FF",
-    "osuperior": "\uF6F0",
-    "otcyrillic": "\u047F",
-    "otilde": "\u00F5",
-    "otildeacute": "\u1E4D",
-    "otildedieresis": "\u1E4F",
+    "osmallkatakana": "\u30a9",
+    "osmallkatakanahalfwidth": "\uff6b",
+    "ostrokeacute": "\u01ff",
+    "osuperior": "\uf6f0",
+    "otcyrillic": "\u047f",
+    "otilde": "\u00f5",
+    "otildeacute": "\u1e4d",
+    "otildedieresis": "\u1e4f",
     "oubopomofo": "\u3121",
-    "overline": "\u203E",
-    "overlinecenterline": "\uFE4A",
+    "overline": "\u203e",
+    "overlinecenterline": "\ufe4a",
     "overlinecmb": "\u0305",
-    "overlinedashed": "\uFE49",
-    "overlinedblwavy": "\uFE4C",
-    "overlinewavy": "\uFE4B",
-    "overscore": "\u00AF",
-    "ovowelsignbengali": "\u09CB",
-    "ovowelsigndeva": "\u094B",
-    "ovowelsigngujarati": "\u0ACB",
+    "overlinedashed": "\ufe49",
+    "overlinedblwavy": "\ufe4c",
+    "overlinewavy": "\ufe4b",
+    "overscore": "\u00af",
+    "ovowelsignbengali": "\u09cb",
+    "ovowelsigndeva": "\u094b",
+    "ovowelsigngujarati": "\u0acb",
     "p": "\u0070",
     "paampssquare": "\u3380",
-    "paasentosquare": "\u332B",
-    "pabengali": "\u09AA",
-    "pacute": "\u1E55",
-    "padeva": "\u092A",
-    "pagedown": "\u21DF",
-    "pageup": "\u21DE",
-    "pagujarati": "\u0AAA",
-    "pagurmukhi": "\u0A2A",
+    "paasentosquare": "\u332b",
+    "pabengali": "\u09aa",
+    "pacute": "\u1e55",
+    "padeva": "\u092a",
+    "pagedown": "\u21df",
+    "pageup": "\u21de",
+    "pagujarati": "\u0aaa",
+    "pagurmukhi": "\u0a2a",
     "pahiragana": "\u3071",
-    "paiyannoithai": "\u0E2F",
-    "pakatakana": "\u30D1",
+    "paiyannoithai": "\u0e2f",
+    "pakatakana": "\u30d1",
     "palatalizationcyrilliccmb": "\u0484",
-    "palochkacyrillic": "\u04C0",
-    "pansioskorean": "\u317F",
-    "paragraph": "\u00B6",
+    "palochkacyrillic": "\u04c0",
+    "pansioskorean": "\u317f",
+    "paragraph": "\u00b6",
     "parallel": "\u2225",
     "parenleft": "\u0028",
-    "parenleftaltonearabic": "\uFD3E",
-    "parenleftbt": "\uF8ED",
-    "parenleftex": "\uF8EC",
-    "parenleftinferior": "\u208D",
-    "parenleftmonospace": "\uFF08",
-    "parenleftsmall": "\uFE59",
-    "parenleftsuperior": "\u207D",
-    "parenlefttp": "\uF8EB",
-    "parenleftvertical": "\uFE35",
+    "parenleftaltonearabic": "\ufd3e",
+    "parenleftbt": "\uf8ed",
+    "parenleftex": "\uf8ec",
+    "parenleftinferior": "\u208d",
+    "parenleftmonospace": "\uff08",
+    "parenleftsmall": "\ufe59",
+    "parenleftsuperior": "\u207d",
+    "parenlefttp": "\uf8eb",
+    "parenleftvertical": "\ufe35",
     "parenright": "\u0029",
-    "parenrightaltonearabic": "\uFD3F",
-    "parenrightbt": "\uF8F8",
-    "parenrightex": "\uF8F7",
-    "parenrightinferior": "\u208E",
-    "parenrightmonospace": "\uFF09",
-    "parenrightsmall": "\uFE5A",
-    "parenrightsuperior": "\u207E",
-    "parenrighttp": "\uF8F6",
-    "parenrightvertical": "\uFE36",
+    "parenrightaltonearabic": "\ufd3f",
+    "parenrightbt": "\uf8f8",
+    "parenrightex": "\uf8f7",
+    "parenrightinferior": "\u208e",
+    "parenrightmonospace": "\uff09",
+    "parenrightsmall": "\ufe5a",
+    "parenrightsuperior": "\u207e",
+    "parenrighttp": "\uf8f6",
+    "parenrightvertical": "\ufe36",
     "partialdiff": "\u2202",
-    "paseqhebrew": "\u05C0",
+    "paseqhebrew": "\u05c0",
     "pashtahebrew": "\u0599",
-    "pasquare": "\u33A9",
-    "patah": "\u05B7",
-    "patah11": "\u05B7",
-    "patah1d": "\u05B7",
-    "patah2a": "\u05B7",
-    "patahhebrew": "\u05B7",
-    "patahnarrowhebrew": "\u05B7",
-    "patahquarterhebrew": "\u05B7",
-    "patahwidehebrew": "\u05B7",
-    "pazerhebrew": "\u05A1",
+    "pasquare": "\u33a9",
+    "patah": "\u05b7",
+    "patah11": "\u05b7",
+    "patah1d": "\u05b7",
+    "patah2a": "\u05b7",
+    "patahhebrew": "\u05b7",
+    "patahnarrowhebrew": "\u05b7",
+    "patahquarterhebrew": "\u05b7",
+    "patahwidehebrew": "\u05b7",
+    "pazerhebrew": "\u05a1",
     "pbopomofo": "\u3106",
-    "pcircle": "\u24DF",
-    "pdotaccent": "\u1E57",
-    "pe": "\u05E4",
-    "pecyrillic": "\u043F",
-    "pedagesh": "\uFB44",
-    "pedageshhebrew": "\uFB44",
-    "peezisquare": "\u333B",
-    "pefinaldageshhebrew": "\uFB43",
-    "peharabic": "\u067E",
-    "peharmenian": "\u057A",
-    "pehebrew": "\u05E4",
-    "pehfinalarabic": "\uFB57",
-    "pehinitialarabic": "\uFB58",
-    "pehiragana": "\u307A",
-    "pehmedialarabic": "\uFB59",
-    "pekatakana": "\u30DA",
-    "pemiddlehookcyrillic": "\u04A7",
-    "perafehebrew": "\uFB4E",
+    "pcircle": "\u24df",
+    "pdotaccent": "\u1e57",
+    "pe": "\u05e4",
+    "pecyrillic": "\u043f",
+    "pedagesh": "\ufb44",
+    "pedageshhebrew": "\ufb44",
+    "peezisquare": "\u333b",
+    "pefinaldageshhebrew": "\ufb43",
+    "peharabic": "\u067e",
+    "peharmenian": "\u057a",
+    "pehebrew": "\u05e4",
+    "pehfinalarabic": "\ufb57",
+    "pehinitialarabic": "\ufb58",
+    "pehiragana": "\u307a",
+    "pehmedialarabic": "\ufb59",
+    "pekatakana": "\u30da",
+    "pemiddlehookcyrillic": "\u04a7",
+    "perafehebrew": "\ufb4e",
     "percent": "\u0025",
-    "percentarabic": "\u066A",
-    "percentmonospace": "\uFF05",
-    "percentsmall": "\uFE6A",
-    "period": "\u002E",
+    "percentarabic": "\u066a",
+    "percentmonospace": "\uff05",
+    "percentsmall": "\ufe6a",
+    "period": "\u002e",
     "periodarmenian": "\u0589",
-    "periodcentered": "\u00B7",
-    "periodhalfwidth": "\uFF61",
-    "periodinferior": "\uF6E7",
-    "periodmonospace": "\uFF0E",
-    "periodsmall": "\uFE52",
-    "periodsuperior": "\uF6E8",
+    "periodcentered": "\u00b7",
+    "periodhalfwidth": "\uff61",
+    "periodinferior": "\uf6e7",
+    "periodmonospace": "\uff0e",
+    "periodsmall": "\ufe52",
+    "periodsuperior": "\uf6e8",
     "perispomenigreekcmb": "\u0342",
-    "perpendicular": "\u22A5",
+    "perpendicular": "\u22a5",
     "perthousand": "\u2030",
-    "peseta": "\u20A7",
-    "pfsquare": "\u338A",
-    "phabengali": "\u09AB",
-    "phadeva": "\u092B",
-    "phagujarati": "\u0AAB",
-    "phagurmukhi": "\u0A2B",
-    "phi": "\u03C6",
-    "phi1": "\u03D5",
-    "phieuphacirclekorean": "\u327A",
-    "phieuphaparenkorean": "\u321A",
-    "phieuphcirclekorean": "\u326C",
-    "phieuphkorean": "\u314D",
-    "phieuphparenkorean": "\u320C",
+    "peseta": "\u20a7",
+    "pfsquare": "\u338a",
+    "phabengali": "\u09ab",
+    "phadeva": "\u092b",
+    "phagujarati": "\u0aab",
+    "phagurmukhi": "\u0a2b",
+    "phi": "\u03c6",
+    "phi1": "\u03d5",
+    "phieuphacirclekorean": "\u327a",
+    "phieuphaparenkorean": "\u321a",
+    "phieuphcirclekorean": "\u326c",
+    "phieuphkorean": "\u314d",
+    "phieuphparenkorean": "\u320c",
     "philatin": "\u0278",
-    "phinthuthai": "\u0E3A",
-    "phisymbolgreek": "\u03D5",
-    "phook": "\u01A5",
-    "phophanthai": "\u0E1E",
-    "phophungthai": "\u0E1C",
-    "phosamphaothai": "\u0E20",
-    "pi": "\u03C0",
+    "phinthuthai": "\u0e3a",
+    "phisymbolgreek": "\u03d5",
+    "phook": "\u01a5",
+    "phophanthai": "\u0e1e",
+    "phophungthai": "\u0e1c",
+    "phosamphaothai": "\u0e20",
+    "pi": "\u03c0",
     "pieupacirclekorean": "\u3273",
     "pieupaparenkorean": "\u3213",
     "pieupcieuckorean": "\u3176",
@@ -3159,535 +3159,535 @@ def convert_glyphlist(path: str) -> None:
     "pieupthieuthkorean": "\u3177",
     "pieuptikeutkorean": "\u3173",
     "pihiragana": "\u3074",
-    "pikatakana": "\u30D4",
-    "pisymbolgreek": "\u03D6",
+    "pikatakana": "\u30d4",
+    "pisymbolgreek": "\u03d6",
     "piwrarmenian": "\u0583",
-    "plus": "\u002B",
-    "plusbelowcmb": "\u031F",
+    "plus": "\u002b",
+    "plusbelowcmb": "\u031f",
     "pluscircle": "\u2295",
-    "plusminus": "\u00B1",
-    "plusmod": "\u02D6",
-    "plusmonospace": "\uFF0B",
-    "plussmall": "\uFE62",
-    "plussuperior": "\u207A",
-    "pmonospace": "\uFF50",
-    "pmsquare": "\u33D8",
-    "pohiragana": "\u307D",
-    "pointingindexdownwhite": "\u261F",
-    "pointingindexleftwhite": "\u261C",
-    "pointingindexrightwhite": "\u261E",
-    "pointingindexupwhite": "\u261D",
-    "pokatakana": "\u30DD",
-    "poplathai": "\u0E1B",
+    "plusminus": "\u00b1",
+    "plusmod": "\u02d6",
+    "plusmonospace": "\uff0b",
+    "plussmall": "\ufe62",
+    "plussuperior": "\u207a",
+    "pmonospace": "\uff50",
+    "pmsquare": "\u33d8",
+    "pohiragana": "\u307d",
+    "pointingindexdownwhite": "\u261f",
+    "pointingindexleftwhite": "\u261c",
+    "pointingindexrightwhite": "\u261e",
+    "pointingindexupwhite": "\u261d",
+    "pokatakana": "\u30dd",
+    "poplathai": "\u0e1b",
     "postalmark": "\u3012",
     "postalmarkface": "\u3020",
-    "pparen": "\u24AB",
-    "precedes": "\u227A",
-    "prescription": "\u211E",
-    "primemod": "\u02B9",
+    "pparen": "\u24ab",
+    "precedes": "\u227a",
+    "prescription": "\u211e",
+    "primemod": "\u02b9",
     "primereversed": "\u2035",
-    "product": "\u220F",
+    "product": "\u220f",
     "projective": "\u2305",
-    "prolongedkana": "\u30FC",
+    "prolongedkana": "\u30fc",
     "propellor": "\u2318",
     "propersubset": "\u2282",
     "propersuperset": "\u2283",
     "proportion": "\u2237",
-    "proportional": "\u221D",
-    "psi": "\u03C8",
+    "proportional": "\u221d",
+    "psi": "\u03c8",
     "psicyrillic": "\u0471",
     "psilipneumatacyrilliccmb": "\u0486",
-    "pssquare": "\u33B0",
+    "pssquare": "\u33b0",
     "puhiragana": "\u3077",
-    "pukatakana": "\u30D7",
-    "pvsquare": "\u33B4",
-    "pwsquare": "\u33BA",
+    "pukatakana": "\u30d7",
+    "pvsquare": "\u33b4",
+    "pwsquare": "\u33ba",
     "q": "\u0071",
     "qadeva": "\u0958",
-    "qadmahebrew": "\u05A8",
+    "qadmahebrew": "\u05a8",
     "qafarabic": "\u0642",
-    "qaffinalarabic": "\uFED6",
-    "qafinitialarabic": "\uFED7",
-    "qafmedialarabic": "\uFED8",
-    "qamats": "\u05B8",
-    "qamats10": "\u05B8",
-    "qamats1a": "\u05B8",
-    "qamats1c": "\u05B8",
-    "qamats27": "\u05B8",
-    "qamats29": "\u05B8",
-    "qamats33": "\u05B8",
-    "qamatsde": "\u05B8",
-    "qamatshebrew": "\u05B8",
-    "qamatsnarrowhebrew": "\u05B8",
-    "qamatsqatanhebrew": "\u05B8",
-    "qamatsqatannarrowhebrew": "\u05B8",
-    "qamatsqatanquarterhebrew": "\u05B8",
-    "qamatsqatanwidehebrew": "\u05B8",
-    "qamatsquarterhebrew": "\u05B8",
-    "qamatswidehebrew": "\u05B8",
-    "qarneyparahebrew": "\u059F",
+    "qaffinalarabic": "\ufed6",
+    "qafinitialarabic": "\ufed7",
+    "qafmedialarabic": "\ufed8",
+    "qamats": "\u05b8",
+    "qamats10": "\u05b8",
+    "qamats1a": "\u05b8",
+    "qamats1c": "\u05b8",
+    "qamats27": "\u05b8",
+    "qamats29": "\u05b8",
+    "qamats33": "\u05b8",
+    "qamatsde": "\u05b8",
+    "qamatshebrew": "\u05b8",
+    "qamatsnarrowhebrew": "\u05b8",
+    "qamatsqatanhebrew": "\u05b8",
+    "qamatsqatannarrowhebrew": "\u05b8",
+    "qamatsqatanquarterhebrew": "\u05b8",
+    "qamatsqatanwidehebrew": "\u05b8",
+    "qamatsquarterhebrew": "\u05b8",
+    "qamatswidehebrew": "\u05b8",
+    "qarneyparahebrew": "\u059f",
     "qbopomofo": "\u3111",
-    "qcircle": "\u24E0",
-    "qhook": "\u02A0",
-    "qmonospace": "\uFF51",
-    "qof": "\u05E7",
-    "qofdagesh": "\uFB47",
-    "qofdageshhebrew": "\uFB47",
-    "qofhatafpatah": "\u05E7\u05B2",
-    "qofhatafpatahhebrew": "\u05E7\u05B2",
-    "qofhatafsegol": "\u05E7\u05B1",
-    "qofhatafsegolhebrew": "\u05E7\u05B1",
-    "qofhebrew": "\u05E7",
-    "qofhiriq": "\u05E7\u05B4",
-    "qofhiriqhebrew": "\u05E7\u05B4",
-    "qofholam": "\u05E7\u05B9",
-    "qofholamhebrew": "\u05E7\u05B9",
-    "qofpatah": "\u05E7\u05B7",
-    "qofpatahhebrew": "\u05E7\u05B7",
-    "qofqamats": "\u05E7\u05B8",
-    "qofqamatshebrew": "\u05E7\u05B8",
-    "qofqubuts": "\u05E7\u05BB",
-    "qofqubutshebrew": "\u05E7\u05BB",
-    "qofsegol": "\u05E7\u05B6",
-    "qofsegolhebrew": "\u05E7\u05B6",
-    "qofsheva": "\u05E7\u05B0",
-    "qofshevahebrew": "\u05E7\u05B0",
-    "qoftsere": "\u05E7\u05B5",
-    "qoftserehebrew": "\u05E7\u05B5",
-    "qparen": "\u24AC",
+    "qcircle": "\u24e0",
+    "qhook": "\u02a0",
+    "qmonospace": "\uff51",
+    "qof": "\u05e7",
+    "qofdagesh": "\ufb47",
+    "qofdageshhebrew": "\ufb47",
+    "qofhatafpatah": "\u05e7\u05b2",
+    "qofhatafpatahhebrew": "\u05e7\u05b2",
+    "qofhatafsegol": "\u05e7\u05b1",
+    "qofhatafsegolhebrew": "\u05e7\u05b1",
+    "qofhebrew": "\u05e7",
+    "qofhiriq": "\u05e7\u05b4",
+    "qofhiriqhebrew": "\u05e7\u05b4",
+    "qofholam": "\u05e7\u05b9",
+    "qofholamhebrew": "\u05e7\u05b9",
+    "qofpatah": "\u05e7\u05b7",
+    "qofpatahhebrew": "\u05e7\u05b7",
+    "qofqamats": "\u05e7\u05b8",
+    "qofqamatshebrew": "\u05e7\u05b8",
+    "qofqubuts": "\u05e7\u05bb",
+    "qofqubutshebrew": "\u05e7\u05bb",
+    "qofsegol": "\u05e7\u05b6",
+    "qofsegolhebrew": "\u05e7\u05b6",
+    "qofsheva": "\u05e7\u05b0",
+    "qofshevahebrew": "\u05e7\u05b0",
+    "qoftsere": "\u05e7\u05b5",
+    "qoftserehebrew": "\u05e7\u05b5",
+    "qparen": "\u24ac",
     "quarternote": "\u2669",
-    "qubuts": "\u05BB",
-    "qubuts18": "\u05BB",
-    "qubuts25": "\u05BB",
-    "qubuts31": "\u05BB",
-    "qubutshebrew": "\u05BB",
-    "qubutsnarrowhebrew": "\u05BB",
-    "qubutsquarterhebrew": "\u05BB",
-    "qubutswidehebrew": "\u05BB",
-    "question": "\u003F",
-    "questionarabic": "\u061F",
-    "questionarmenian": "\u055E",
-    "questiondown": "\u00BF",
-    "questiondownsmall": "\uF7BF",
-    "questiongreek": "\u037E",
-    "questionmonospace": "\uFF1F",
-    "questionsmall": "\uF73F",
+    "qubuts": "\u05bb",
+    "qubuts18": "\u05bb",
+    "qubuts25": "\u05bb",
+    "qubuts31": "\u05bb",
+    "qubutshebrew": "\u05bb",
+    "qubutsnarrowhebrew": "\u05bb",
+    "qubutsquarterhebrew": "\u05bb",
+    "qubutswidehebrew": "\u05bb",
+    "question": "\u003f",
+    "questionarabic": "\u061f",
+    "questionarmenian": "\u055e",
+    "questiondown": "\u00bf",
+    "questiondownsmall": "\uf7bf",
+    "questiongreek": "\u037e",
+    "questionmonospace": "\uff1f",
+    "questionsmall": "\uf73f",
     "quotedbl": "\u0022",
-    "quotedblbase": "\u201E",
-    "quotedblleft": "\u201C",
-    "quotedblmonospace": "\uFF02",
-    "quotedblprime": "\u301E",
-    "quotedblprimereversed": "\u301D",
-    "quotedblright": "\u201D",
+    "quotedblbase": "\u201e",
+    "quotedblleft": "\u201c",
+    "quotedblmonospace": "\uff02",
+    "quotedblprime": "\u301e",
+    "quotedblprimereversed": "\u301d",
+    "quotedblright": "\u201d",
     "quoteleft": "\u2018",
-    "quoteleftreversed": "\u201B",
-    "quotereversed": "\u201B",
+    "quoteleftreversed": "\u201b",
+    "quotereversed": "\u201b",
     "quoteright": "\u2019",
     "quoterightn": "\u0149",
-    "quotesinglbase": "\u201A",
+    "quotesinglbase": "\u201a",
     "quotesingle": "\u0027",
-    "quotesinglemonospace": "\uFF07",
+    "quotesinglemonospace": "\uff07",
     "r": "\u0072",
-    "raarmenian": "\u057C",
-    "rabengali": "\u09B0",
+    "raarmenian": "\u057c",
+    "rabengali": "\u09b0",
     "racute": "\u0155",
     "radeva": "\u0930",
-    "radical": "\u221A",
-    "radicalex": "\uF8E5",
-    "radoverssquare": "\u33AE",
-    "radoverssquaredsquare": "\u33AF",
-    "radsquare": "\u33AD",
-    "rafe": "\u05BF",
-    "rafehebrew": "\u05BF",
-    "ragujarati": "\u0AB0",
-    "ragurmukhi": "\u0A30",
+    "radical": "\u221a",
+    "radicalex": "\uf8e5",
+    "radoverssquare": "\u33ae",
+    "radoverssquaredsquare": "\u33af",
+    "radsquare": "\u33ad",
+    "rafe": "\u05bf",
+    "rafehebrew": "\u05bf",
+    "ragujarati": "\u0ab0",
+    "ragurmukhi": "\u0a30",
     "rahiragana": "\u3089",
-    "rakatakana": "\u30E9",
-    "rakatakanahalfwidth": "\uFF97",
-    "ralowerdiagonalbengali": "\u09F1",
-    "ramiddlediagonalbengali": "\u09F0",
+    "rakatakana": "\u30e9",
+    "rakatakanahalfwidth": "\uff97",
+    "ralowerdiagonalbengali": "\u09f1",
+    "ramiddlediagonalbengali": "\u09f0",
     "ramshorn": "\u0264",
     "ratio": "\u2236",
     "rbopomofo": "\u3116",
     "rcaron": "\u0159",
     "rcedilla": "\u0157",
-    "rcircle": "\u24E1",
+    "rcircle": "\u24e1",
     "rcommaaccent": "\u0157",
     "rdblgrave": "\u0211",
-    "rdotaccent": "\u1E59",
-    "rdotbelow": "\u1E5B",
-    "rdotbelowmacron": "\u1E5D",
-    "referencemark": "\u203B",
+    "rdotaccent": "\u1e59",
+    "rdotbelow": "\u1e5b",
+    "rdotbelowmacron": "\u1e5d",
+    "referencemark": "\u203b",
     "reflexsubset": "\u2286",
     "reflexsuperset": "\u2287",
-    "registered": "\u00AE",
-    "registersans": "\uF8E8",
-    "registerserif": "\uF6DA",
+    "registered": "\u00ae",
+    "registersans": "\uf8e8",
+    "registerserif": "\uf6da",
     "reharabic": "\u0631",
     "reharmenian": "\u0580",
-    "rehfinalarabic": "\uFEAE",
-    "rehiragana": "\u308C",
-    "rehyehaleflamarabic": "\u0631\uFEF3\uFE8E\u0644",
-    "rekatakana": "\u30EC",
-    "rekatakanahalfwidth": "\uFF9A",
-    "resh": "\u05E8",
-    "reshdageshhebrew": "\uFB48",
-    "reshhatafpatah": "\u05E8\u05B2",
-    "reshhatafpatahhebrew": "\u05E8\u05B2",
-    "reshhatafsegol": "\u05E8\u05B1",
-    "reshhatafsegolhebrew": "\u05E8\u05B1",
-    "reshhebrew": "\u05E8",
-    "reshhiriq": "\u05E8\u05B4",
-    "reshhiriqhebrew": "\u05E8\u05B4",
-    "reshholam": "\u05E8\u05B9",
-    "reshholamhebrew": "\u05E8\u05B9",
-    "reshpatah": "\u05E8\u05B7",
-    "reshpatahhebrew": "\u05E8\u05B7",
-    "reshqamats": "\u05E8\u05B8",
-    "reshqamatshebrew": "\u05E8\u05B8",
-    "reshqubuts": "\u05E8\u05BB",
-    "reshqubutshebrew": "\u05E8\u05BB",
-    "reshsegol": "\u05E8\u05B6",
-    "reshsegolhebrew": "\u05E8\u05B6",
-    "reshsheva": "\u05E8\u05B0",
-    "reshshevahebrew": "\u05E8\u05B0",
-    "reshtsere": "\u05E8\u05B5",
-    "reshtserehebrew": "\u05E8\u05B5",
-    "reversedtilde": "\u223D",
+    "rehfinalarabic": "\ufeae",
+    "rehiragana": "\u308c",
+    "rehyehaleflamarabic": "\u0631\ufef3\ufe8e\u0644",
+    "rekatakana": "\u30ec",
+    "rekatakanahalfwidth": "\uff9a",
+    "resh": "\u05e8",
+    "reshdageshhebrew": "\ufb48",
+    "reshhatafpatah": "\u05e8\u05b2",
+    "reshhatafpatahhebrew": "\u05e8\u05b2",
+    "reshhatafsegol": "\u05e8\u05b1",
+    "reshhatafsegolhebrew": "\u05e8\u05b1",
+    "reshhebrew": "\u05e8",
+    "reshhiriq": "\u05e8\u05b4",
+    "reshhiriqhebrew": "\u05e8\u05b4",
+    "reshholam": "\u05e8\u05b9",
+    "reshholamhebrew": "\u05e8\u05b9",
+    "reshpatah": "\u05e8\u05b7",
+    "reshpatahhebrew": "\u05e8\u05b7",
+    "reshqamats": "\u05e8\u05b8",
+    "reshqamatshebrew": "\u05e8\u05b8",
+    "reshqubuts": "\u05e8\u05bb",
+    "reshqubutshebrew": "\u05e8\u05bb",
+    "reshsegol": "\u05e8\u05b6",
+    "reshsegolhebrew": "\u05e8\u05b6",
+    "reshsheva": "\u05e8\u05b0",
+    "reshshevahebrew": "\u05e8\u05b0",
+    "reshtsere": "\u05e8\u05b5",
+    "reshtserehebrew": "\u05e8\u05b5",
+    "reversedtilde": "\u223d",
     "reviahebrew": "\u0597",
     "reviamugrashhebrew": "\u0597",
     "revlogicalnot": "\u2310",
-    "rfishhook": "\u027E",
-    "rfishhookreversed": "\u027F",
-    "rhabengali": "\u09DD",
-    "rhadeva": "\u095D",
-    "rho": "\u03C1",
-    "rhook": "\u027D",
-    "rhookturned": "\u027B",
-    "rhookturnedsuperior": "\u02B5",
-    "rhosymbolgreek": "\u03F1",
-    "rhotichookmod": "\u02DE",
+    "rfishhook": "\u027e",
+    "rfishhookreversed": "\u027f",
+    "rhabengali": "\u09dd",
+    "rhadeva": "\u095d",
+    "rho": "\u03c1",
+    "rhook": "\u027d",
+    "rhookturned": "\u027b",
+    "rhookturnedsuperior": "\u02b5",
+    "rhosymbolgreek": "\u03f1",
+    "rhotichookmod": "\u02de",
     "rieulacirclekorean": "\u3271",
     "rieulaparenkorean": "\u3211",
     "rieulcirclekorean": "\u3263",
     "rieulhieuhkorean": "\u3140",
-    "rieulkiyeokkorean": "\u313A",
+    "rieulkiyeokkorean": "\u313a",
     "rieulkiyeoksioskorean": "\u3169",
     "rieulkorean": "\u3139",
-    "rieulmieumkorean": "\u313B",
-    "rieulpansioskorean": "\u316C",
+    "rieulmieumkorean": "\u313b",
+    "rieulpansioskorean": "\u316c",
     "rieulparenkorean": "\u3203",
-    "rieulphieuphkorean": "\u313F",
-    "rieulpieupkorean": "\u313C",
-    "rieulpieupsioskorean": "\u316B",
-    "rieulsioskorean": "\u313D",
-    "rieulthieuthkorean": "\u313E",
-    "rieultikeutkorean": "\u316A",
-    "rieulyeorinhieuhkorean": "\u316D",
-    "rightangle": "\u221F",
+    "rieulphieuphkorean": "\u313f",
+    "rieulpieupkorean": "\u313c",
+    "rieulpieupsioskorean": "\u316b",
+    "rieulsioskorean": "\u313d",
+    "rieulthieuthkorean": "\u313e",
+    "rieultikeutkorean": "\u316a",
+    "rieulyeorinhieuhkorean": "\u316d",
+    "rightangle": "\u221f",
     "righttackbelowcmb": "\u0319",
-    "righttriangle": "\u22BF",
-    "rihiragana": "\u308A",
-    "rikatakana": "\u30EA",
-    "rikatakanahalfwidth": "\uFF98",
-    "ring": "\u02DA",
+    "righttriangle": "\u22bf",
+    "rihiragana": "\u308a",
+    "rikatakana": "\u30ea",
+    "rikatakanahalfwidth": "\uff98",
+    "ring": "\u02da",
     "ringbelowcmb": "\u0325",
-    "ringcmb": "\u030A",
-    "ringhalfleft": "\u02BF",
+    "ringcmb": "\u030a",
+    "ringhalfleft": "\u02bf",
     "ringhalfleftarmenian": "\u0559",
-    "ringhalfleftbelowcmb": "\u031C",
-    "ringhalfleftcentered": "\u02D3",
-    "ringhalfright": "\u02BE",
+    "ringhalfleftbelowcmb": "\u031c",
+    "ringhalfleftcentered": "\u02d3",
+    "ringhalfright": "\u02be",
     "ringhalfrightbelowcmb": "\u0339",
-    "ringhalfrightcentered": "\u02D2",
+    "ringhalfrightcentered": "\u02d2",
     "rinvertedbreve": "\u0213",
     "rittorusquare": "\u3351",
-    "rlinebelow": "\u1E5F",
-    "rlongleg": "\u027C",
-    "rlonglegturned": "\u027A",
-    "rmonospace": "\uFF52",
-    "rohiragana": "\u308D",
-    "rokatakana": "\u30ED",
-    "rokatakanahalfwidth": "\uFF9B",
-    "roruathai": "\u0E23",
-    "rparen": "\u24AD",
-    "rrabengali": "\u09DC",
+    "rlinebelow": "\u1e5f",
+    "rlongleg": "\u027c",
+    "rlonglegturned": "\u027a",
+    "rmonospace": "\uff52",
+    "rohiragana": "\u308d",
+    "rokatakana": "\u30ed",
+    "rokatakanahalfwidth": "\uff9b",
+    "roruathai": "\u0e23",
+    "rparen": "\u24ad",
+    "rrabengali": "\u09dc",
     "rradeva": "\u0931",
-    "rragurmukhi": "\u0A5C",
+    "rragurmukhi": "\u0a5c",
     "rreharabic": "\u0691",
-    "rrehfinalarabic": "\uFB8D",
-    "rrvocalicbengali": "\u09E0",
+    "rrehfinalarabic": "\ufb8d",
+    "rrvocalicbengali": "\u09e0",
     "rrvocalicdeva": "\u0960",
-    "rrvocalicgujarati": "\u0AE0",
-    "rrvocalicvowelsignbengali": "\u09C4",
+    "rrvocalicgujarati": "\u0ae0",
+    "rrvocalicvowelsignbengali": "\u09c4",
     "rrvocalicvowelsigndeva": "\u0944",
-    "rrvocalicvowelsigngujarati": "\u0AC4",
-    "rsuperior": "\uF6F1",
+    "rrvocalicvowelsigngujarati": "\u0ac4",
+    "rsuperior": "\uf6f1",
     "rtblock": "\u2590",
     "rturned": "\u0279",
-    "rturnedsuperior": "\u02B4",
-    "ruhiragana": "\u308B",
-    "rukatakana": "\u30EB",
-    "rukatakanahalfwidth": "\uFF99",
-    "rupeemarkbengali": "\u09F2",
-    "rupeesignbengali": "\u09F3",
-    "rupiah": "\uF6DD",
-    "ruthai": "\u0E24",
-    "rvocalicbengali": "\u098B",
-    "rvocalicdeva": "\u090B",
-    "rvocalicgujarati": "\u0A8B",
-    "rvocalicvowelsignbengali": "\u09C3",
+    "rturnedsuperior": "\u02b4",
+    "ruhiragana": "\u308b",
+    "rukatakana": "\u30eb",
+    "rukatakanahalfwidth": "\uff99",
+    "rupeemarkbengali": "\u09f2",
+    "rupeesignbengali": "\u09f3",
+    "rupiah": "\uf6dd",
+    "ruthai": "\u0e24",
+    "rvocalicbengali": "\u098b",
+    "rvocalicdeva": "\u090b",
+    "rvocalicgujarati": "\u0a8b",
+    "rvocalicvowelsignbengali": "\u09c3",
     "rvocalicvowelsigndeva": "\u0943",
-    "rvocalicvowelsigngujarati": "\u0AC3",
+    "rvocalicvowelsigngujarati": "\u0ac3",
     "s": "\u0073",
-    "sabengali": "\u09B8",
-    "sacute": "\u015B",
-    "sacutedotaccent": "\u1E65",
+    "sabengali": "\u09b8",
+    "sacute": "\u015b",
+    "sacutedotaccent": "\u1e65",
     "sadarabic": "\u0635",
     "sadeva": "\u0938",
-    "sadfinalarabic": "\uFEBA",
-    "sadinitialarabic": "\uFEBB",
-    "sadmedialarabic": "\uFEBC",
-    "sagujarati": "\u0AB8",
-    "sagurmukhi": "\u0A38",
+    "sadfinalarabic": "\ufeba",
+    "sadinitialarabic": "\ufebb",
+    "sadmedialarabic": "\ufebc",
+    "sagujarati": "\u0ab8",
+    "sagurmukhi": "\u0a38",
     "sahiragana": "\u3055",
-    "sakatakana": "\u30B5",
-    "sakatakanahalfwidth": "\uFF7B",
-    "sallallahoualayhewasallamarabic": "\uFDFA",
-    "samekh": "\u05E1",
-    "samekhdagesh": "\uFB41",
-    "samekhdageshhebrew": "\uFB41",
-    "samekhhebrew": "\u05E1",
-    "saraaathai": "\u0E32",
-    "saraaethai": "\u0E41",
-    "saraaimaimalaithai": "\u0E44",
-    "saraaimaimuanthai": "\u0E43",
-    "saraamthai": "\u0E33",
-    "saraathai": "\u0E30",
-    "saraethai": "\u0E40",
-    "saraiileftthai": "\uF886",
-    "saraiithai": "\u0E35",
-    "saraileftthai": "\uF885",
-    "saraithai": "\u0E34",
-    "saraothai": "\u0E42",
-    "saraueeleftthai": "\uF888",
-    "saraueethai": "\u0E37",
-    "saraueleftthai": "\uF887",
-    "sarauethai": "\u0E36",
-    "sarauthai": "\u0E38",
-    "sarauuthai": "\u0E39",
+    "sakatakana": "\u30b5",
+    "sakatakanahalfwidth": "\uff7b",
+    "sallallahoualayhewasallamarabic": "\ufdfa",
+    "samekh": "\u05e1",
+    "samekhdagesh": "\ufb41",
+    "samekhdageshhebrew": "\ufb41",
+    "samekhhebrew": "\u05e1",
+    "saraaathai": "\u0e32",
+    "saraaethai": "\u0e41",
+    "saraaimaimalaithai": "\u0e44",
+    "saraaimaimuanthai": "\u0e43",
+    "saraamthai": "\u0e33",
+    "saraathai": "\u0e30",
+    "saraethai": "\u0e40",
+    "saraiileftthai": "\uf886",
+    "saraiithai": "\u0e35",
+    "saraileftthai": "\uf885",
+    "saraithai": "\u0e34",
+    "saraothai": "\u0e42",
+    "saraueeleftthai": "\uf888",
+    "saraueethai": "\u0e37",
+    "saraueleftthai": "\uf887",
+    "sarauethai": "\u0e36",
+    "sarauthai": "\u0e38",
+    "sarauuthai": "\u0e39",
     "sbopomofo": "\u3119",
     "scaron": "\u0161",
-    "scarondotaccent": "\u1E67",
-    "scedilla": "\u015F",
+    "scarondotaccent": "\u1e67",
+    "scedilla": "\u015f",
     "schwa": "\u0259",
-    "schwacyrillic": "\u04D9",
-    "schwadieresiscyrillic": "\u04DB",
-    "schwahook": "\u025A",
-    "scircle": "\u24E2",
-    "scircumflex": "\u015D",
+    "schwacyrillic": "\u04d9",
+    "schwadieresiscyrillic": "\u04db",
+    "schwahook": "\u025a",
+    "scircle": "\u24e2",
+    "scircumflex": "\u015d",
     "scommaaccent": "\u0219",
-    "sdotaccent": "\u1E61",
-    "sdotbelow": "\u1E63",
-    "sdotbelowdotaccent": "\u1E69",
-    "seagullbelowcmb": "\u033C",
+    "sdotaccent": "\u1e61",
+    "sdotbelow": "\u1e63",
+    "sdotbelowdotaccent": "\u1e69",
+    "seagullbelowcmb": "\u033c",
     "second": "\u2033",
-    "secondtonechinese": "\u02CA",
-    "section": "\u00A7",
+    "secondtonechinese": "\u02ca",
+    "section": "\u00a7",
     "seenarabic": "\u0633",
-    "seenfinalarabic": "\uFEB2",
-    "seeninitialarabic": "\uFEB3",
-    "seenmedialarabic": "\uFEB4",
-    "segol": "\u05B6",
-    "segol13": "\u05B6",
-    "segol1f": "\u05B6",
-    "segol2c": "\u05B6",
-    "segolhebrew": "\u05B6",
-    "segolnarrowhebrew": "\u05B6",
-    "segolquarterhebrew": "\u05B6",
+    "seenfinalarabic": "\ufeb2",
+    "seeninitialarabic": "\ufeb3",
+    "seenmedialarabic": "\ufeb4",
+    "segol": "\u05b6",
+    "segol13": "\u05b6",
+    "segol1f": "\u05b6",
+    "segol2c": "\u05b6",
+    "segolhebrew": "\u05b6",
+    "segolnarrowhebrew": "\u05b6",
+    "segolquarterhebrew": "\u05b6",
     "segoltahebrew": "\u0592",
-    "segolwidehebrew": "\u05B6",
-    "seharmenian": "\u057D",
-    "sehiragana": "\u305B",
-    "sekatakana": "\u30BB",
-    "sekatakanahalfwidth": "\uFF7E",
-    "semicolon": "\u003B",
-    "semicolonarabic": "\u061B",
-    "semicolonmonospace": "\uFF1B",
-    "semicolonsmall": "\uFE54",
-    "semivoicedmarkkana": "\u309C",
-    "semivoicedmarkkanahalfwidth": "\uFF9F",
+    "segolwidehebrew": "\u05b6",
+    "seharmenian": "\u057d",
+    "sehiragana": "\u305b",
+    "sekatakana": "\u30bb",
+    "sekatakanahalfwidth": "\uff7e",
+    "semicolon": "\u003b",
+    "semicolonarabic": "\u061b",
+    "semicolonmonospace": "\uff1b",
+    "semicolonsmall": "\ufe54",
+    "semivoicedmarkkana": "\u309c",
+    "semivoicedmarkkanahalfwidth": "\uff9f",
     "sentisquare": "\u3322",
     "sentosquare": "\u3323",
     "seven": "\u0037",
     "sevenarabic": "\u0667",
-    "sevenbengali": "\u09ED",
+    "sevenbengali": "\u09ed",
     "sevencircle": "\u2466",
     "sevencircleinversesansserif": "\u2790",
-    "sevendeva": "\u096D",
-    "seveneighths": "\u215E",
-    "sevengujarati": "\u0AED",
-    "sevengurmukhi": "\u0A6D",
+    "sevendeva": "\u096d",
+    "seveneighths": "\u215e",
+    "sevengujarati": "\u0aed",
+    "sevengurmukhi": "\u0a6d",
     "sevenhackarabic": "\u0667",
     "sevenhangzhou": "\u3027",
     "sevenideographicparen": "\u3226",
     "seveninferior": "\u2087",
-    "sevenmonospace": "\uFF17",
-    "sevenoldstyle": "\uF737",
-    "sevenparen": "\u247A",
-    "sevenperiod": "\u248E",
-    "sevenpersian": "\u06F7",
+    "sevenmonospace": "\uff17",
+    "sevenoldstyle": "\uf737",
+    "sevenparen": "\u247a",
+    "sevenperiod": "\u248e",
+    "sevenpersian": "\u06f7",
     "sevenroman": "\u2176",
     "sevensuperior": "\u2077",
     "seventeencircle": "\u2470",
     "seventeenparen": "\u2484",
     "seventeenperiod": "\u2498",
-    "seventhai": "\u0E57",
-    "sfthyphen": "\u00AD",
+    "seventhai": "\u0e57",
+    "sfthyphen": "\u00ad",
     "shaarmenian": "\u0577",
-    "shabengali": "\u09B6",
+    "shabengali": "\u09b6",
     "shacyrillic": "\u0448",
     "shaddaarabic": "\u0651",
-    "shaddadammaarabic": "\uFC61",
-    "shaddadammatanarabic": "\uFC5E",
-    "shaddafathaarabic": "\uFC60",
-    "shaddafathatanarabic": "\u0651\u064B",
-    "shaddakasraarabic": "\uFC62",
-    "shaddakasratanarabic": "\uFC5F",
+    "shaddadammaarabic": "\ufc61",
+    "shaddadammatanarabic": "\ufc5e",
+    "shaddafathaarabic": "\ufc60",
+    "shaddafathatanarabic": "\u0651\u064b",
+    "shaddakasraarabic": "\ufc62",
+    "shaddakasratanarabic": "\ufc5f",
     "shade": "\u2592",
     "shadedark": "\u2593",
     "shadelight": "\u2591",
     "shademedium": "\u2592",
     "shadeva": "\u0936",
-    "shagujarati": "\u0AB6",
-    "shagurmukhi": "\u0A36",
+    "shagujarati": "\u0ab6",
+    "shagurmukhi": "\u0a36",
     "shalshelethebrew": "\u0593",
     "shbopomofo": "\u3115",
     "shchacyrillic": "\u0449",
     "sheenarabic": "\u0634",
-    "sheenfinalarabic": "\uFEB6",
-    "sheeninitialarabic": "\uFEB7",
-    "sheenmedialarabic": "\uFEB8",
-    "sheicoptic": "\u03E3",
-    "sheqel": "\u20AA",
-    "sheqelhebrew": "\u20AA",
-    "sheva": "\u05B0",
-    "sheva115": "\u05B0",
-    "sheva15": "\u05B0",
-    "sheva22": "\u05B0",
-    "sheva2e": "\u05B0",
-    "shevahebrew": "\u05B0",
-    "shevanarrowhebrew": "\u05B0",
-    "shevaquarterhebrew": "\u05B0",
-    "shevawidehebrew": "\u05B0",
-    "shhacyrillic": "\u04BB",
-    "shimacoptic": "\u03ED",
-    "shin": "\u05E9",
-    "shindagesh": "\uFB49",
-    "shindageshhebrew": "\uFB49",
-    "shindageshshindot": "\uFB2C",
-    "shindageshshindothebrew": "\uFB2C",
-    "shindageshsindot": "\uFB2D",
-    "shindageshsindothebrew": "\uFB2D",
-    "shindothebrew": "\u05C1",
-    "shinhebrew": "\u05E9",
-    "shinshindot": "\uFB2A",
-    "shinshindothebrew": "\uFB2A",
-    "shinsindot": "\uFB2B",
-    "shinsindothebrew": "\uFB2B",
+    "sheenfinalarabic": "\ufeb6",
+    "sheeninitialarabic": "\ufeb7",
+    "sheenmedialarabic": "\ufeb8",
+    "sheicoptic": "\u03e3",
+    "sheqel": "\u20aa",
+    "sheqelhebrew": "\u20aa",
+    "sheva": "\u05b0",
+    "sheva115": "\u05b0",
+    "sheva15": "\u05b0",
+    "sheva22": "\u05b0",
+    "sheva2e": "\u05b0",
+    "shevahebrew": "\u05b0",
+    "shevanarrowhebrew": "\u05b0",
+    "shevaquarterhebrew": "\u05b0",
+    "shevawidehebrew": "\u05b0",
+    "shhacyrillic": "\u04bb",
+    "shimacoptic": "\u03ed",
+    "shin": "\u05e9",
+    "shindagesh": "\ufb49",
+    "shindageshhebrew": "\ufb49",
+    "shindageshshindot": "\ufb2c",
+    "shindageshshindothebrew": "\ufb2c",
+    "shindageshsindot": "\ufb2d",
+    "shindageshsindothebrew": "\ufb2d",
+    "shindothebrew": "\u05c1",
+    "shinhebrew": "\u05e9",
+    "shinshindot": "\ufb2a",
+    "shinshindothebrew": "\ufb2a",
+    "shinsindot": "\ufb2b",
+    "shinsindothebrew": "\ufb2b",
     "shook": "\u0282",
-    "sigma": "\u03C3",
-    "sigma1": "\u03C2",
-    "sigmafinal": "\u03C2",
-    "sigmalunatesymbolgreek": "\u03F2",
+    "sigma": "\u03c3",
+    "sigma1": "\u03c2",
+    "sigmafinal": "\u03c2",
+    "sigmalunatesymbolgreek": "\u03f2",
     "sihiragana": "\u3057",
-    "sikatakana": "\u30B7",
-    "sikatakanahalfwidth": "\uFF7C",
-    "siluqhebrew": "\u05BD",
-    "siluqlefthebrew": "\u05BD",
-    "similar": "\u223C",
-    "sindothebrew": "\u05C2",
+    "sikatakana": "\u30b7",
+    "sikatakanahalfwidth": "\uff7c",
+    "siluqhebrew": "\u05bd",
+    "siluqlefthebrew": "\u05bd",
+    "similar": "\u223c",
+    "sindothebrew": "\u05c2",
     "siosacirclekorean": "\u3274",
     "siosaparenkorean": "\u3214",
-    "sioscieuckorean": "\u317E",
+    "sioscieuckorean": "\u317e",
     "sioscirclekorean": "\u3266",
-    "sioskiyeokkorean": "\u317A",
+    "sioskiyeokkorean": "\u317a",
     "sioskorean": "\u3145",
-    "siosnieunkorean": "\u317B",
+    "siosnieunkorean": "\u317b",
     "siosparenkorean": "\u3206",
-    "siospieupkorean": "\u317D",
-    "siostikeutkorean": "\u317C",
+    "siospieupkorean": "\u317d",
+    "siostikeutkorean": "\u317c",
     "six": "\u0036",
     "sixarabic": "\u0666",
-    "sixbengali": "\u09EC",
+    "sixbengali": "\u09ec",
     "sixcircle": "\u2465",
-    "sixcircleinversesansserif": "\u278F",
-    "sixdeva": "\u096C",
-    "sixgujarati": "\u0AEC",
-    "sixgurmukhi": "\u0A6C",
+    "sixcircleinversesansserif": "\u278f",
+    "sixdeva": "\u096c",
+    "sixgujarati": "\u0aec",
+    "sixgurmukhi": "\u0a6c",
     "sixhackarabic": "\u0666",
     "sixhangzhou": "\u3026",
     "sixideographicparen": "\u3225",
     "sixinferior": "\u2086",
-    "sixmonospace": "\uFF16",
-    "sixoldstyle": "\uF736",
+    "sixmonospace": "\uff16",
+    "sixoldstyle": "\uf736",
     "sixparen": "\u2479",
-    "sixperiod": "\u248D",
-    "sixpersian": "\u06F6",
+    "sixperiod": "\u248d",
+    "sixpersian": "\u06f6",
     "sixroman": "\u2175",
     "sixsuperior": "\u2076",
-    "sixteencircle": "\u246F",
-    "sixteencurrencydenominatorbengali": "\u09F9",
+    "sixteencircle": "\u246f",
+    "sixteencurrencydenominatorbengali": "\u09f9",
     "sixteenparen": "\u2483",
     "sixteenperiod": "\u2497",
-    "sixthai": "\u0E56",
-    "slash": "\u002F",
-    "slashmonospace": "\uFF0F",
-    "slong": "\u017F",
-    "slongdotaccent": "\u1E9B",
-    "smileface": "\u263A",
-    "smonospace": "\uFF53",
-    "sofpasuqhebrew": "\u05C3",
-    "softhyphen": "\u00AD",
-    "softsigncyrillic": "\u044C",
-    "sohiragana": "\u305D",
-    "sokatakana": "\u30BD",
-    "sokatakanahalfwidth": "\uFF7F",
+    "sixthai": "\u0e56",
+    "slash": "\u002f",
+    "slashmonospace": "\uff0f",
+    "slong": "\u017f",
+    "slongdotaccent": "\u1e9b",
+    "smileface": "\u263a",
+    "smonospace": "\uff53",
+    "sofpasuqhebrew": "\u05c3",
+    "softhyphen": "\u00ad",
+    "softsigncyrillic": "\u044c",
+    "sohiragana": "\u305d",
+    "sokatakana": "\u30bd",
+    "sokatakanahalfwidth": "\uff7f",
     "soliduslongoverlaycmb": "\u0338",
     "solidusshortoverlaycmb": "\u0337",
-    "sorusithai": "\u0E29",
-    "sosalathai": "\u0E28",
-    "sosothai": "\u0E0B",
-    "sosuathai": "\u0E2A",
+    "sorusithai": "\u0e29",
+    "sosalathai": "\u0e28",
+    "sosothai": "\u0e0b",
+    "sosuathai": "\u0e2a",
     "space": "\u0020",
     "spacehackarabic": "\u0020",
     "spade": "\u2660",
     "spadesuitblack": "\u2660",
     "spadesuitwhite": "\u2664",
-    "sparen": "\u24AE",
-    "squarebelowcmb": "\u033B",
-    "squarecc": "\u33C4",
-    "squarecm": "\u339D",
-    "squarediagonalcrosshatchfill": "\u25A9",
-    "squarehorizontalfill": "\u25A4",
-    "squarekg": "\u338F",
-    "squarekm": "\u339E",
-    "squarekmcapital": "\u33CE",
-    "squareln": "\u33D1",
-    "squarelog": "\u33D2",
-    "squaremg": "\u338E",
-    "squaremil": "\u33D5",
-    "squaremm": "\u339C",
-    "squaremsquared": "\u33A1",
-    "squareorthogonalcrosshatchfill": "\u25A6",
-    "squareupperlefttolowerrightfill": "\u25A7",
-    "squareupperrighttolowerleftfill": "\u25A8",
-    "squareverticalfill": "\u25A5",
-    "squarewhitewithsmallblack": "\u25A3",
-    "srsquare": "\u33DB",
-    "ssabengali": "\u09B7",
+    "sparen": "\u24ae",
+    "squarebelowcmb": "\u033b",
+    "squarecc": "\u33c4",
+    "squarecm": "\u339d",
+    "squarediagonalcrosshatchfill": "\u25a9",
+    "squarehorizontalfill": "\u25a4",
+    "squarekg": "\u338f",
+    "squarekm": "\u339e",
+    "squarekmcapital": "\u33ce",
+    "squareln": "\u33d1",
+    "squarelog": "\u33d2",
+    "squaremg": "\u338e",
+    "squaremil": "\u33d5",
+    "squaremm": "\u339c",
+    "squaremsquared": "\u33a1",
+    "squareorthogonalcrosshatchfill": "\u25a6",
+    "squareupperlefttolowerrightfill": "\u25a7",
+    "squareupperrighttolowerleftfill": "\u25a8",
+    "squareverticalfill": "\u25a5",
+    "squarewhitewithsmallblack": "\u25a3",
+    "srsquare": "\u33db",
+    "ssabengali": "\u09b7",
     "ssadeva": "\u0937",
-    "ssagujarati": "\u0AB7",
+    "ssagujarati": "\u0ab7",
     "ssangcieuckorean": "\u3149",
     "ssanghieuhkorean": "\u3185",
     "ssangieungkorean": "\u3180",
@@ -3696,671 +3696,671 @@ def convert_glyphlist(path: str) -> None:
     "ssangpieupkorean": "\u3143",
     "ssangsioskorean": "\u3146",
     "ssangtikeutkorean": "\u3138",
-    "ssuperior": "\uF6F2",
-    "sterling": "\u00A3",
-    "sterlingmonospace": "\uFFE1",
+    "ssuperior": "\uf6f2",
+    "sterling": "\u00a3",
+    "sterlingmonospace": "\uffe1",
     "strokelongoverlaycmb": "\u0336",
     "strokeshortoverlaycmb": "\u0335",
     "subset": "\u2282",
-    "subsetnotequal": "\u228A",
+    "subsetnotequal": "\u228a",
     "subsetorequal": "\u2286",
-    "succeeds": "\u227B",
-    "suchthat": "\u220B",
+    "succeeds": "\u227b",
+    "suchthat": "\u220b",
     "suhiragana": "\u3059",
-    "sukatakana": "\u30B9",
-    "sukatakanahalfwidth": "\uFF7D",
+    "sukatakana": "\u30b9",
+    "sukatakanahalfwidth": "\uff7d",
     "sukunarabic": "\u0652",
     "summation": "\u2211",
-    "sun": "\u263C",
+    "sun": "\u263c",
     "superset": "\u2283",
-    "supersetnotequal": "\u228B",
+    "supersetnotequal": "\u228b",
     "supersetorequal": "\u2287",
-    "svsquare": "\u33DC",
-    "syouwaerasquare": "\u337C",
+    "svsquare": "\u33dc",
+    "syouwaerasquare": "\u337c",
     "t": "\u0074",
-    "tabengali": "\u09A4",
-    "tackdown": "\u22A4",
-    "tackleft": "\u22A3",
+    "tabengali": "\u09a4",
+    "tackdown": "\u22a4",
+    "tackleft": "\u22a3",
     "tadeva": "\u0924",
-    "tagujarati": "\u0AA4",
-    "tagurmukhi": "\u0A24",
+    "tagujarati": "\u0aa4",
+    "tagurmukhi": "\u0a24",
     "taharabic": "\u0637",
-    "tahfinalarabic": "\uFEC2",
-    "tahinitialarabic": "\uFEC3",
-    "tahiragana": "\u305F",
-    "tahmedialarabic": "\uFEC4",
-    "taisyouerasquare": "\u337D",
-    "takatakana": "\u30BF",
-    "takatakanahalfwidth": "\uFF80",
+    "tahfinalarabic": "\ufec2",
+    "tahinitialarabic": "\ufec3",
+    "tahiragana": "\u305f",
+    "tahmedialarabic": "\ufec4",
+    "taisyouerasquare": "\u337d",
+    "takatakana": "\u30bf",
+    "takatakanahalfwidth": "\uff80",
     "tatweelarabic": "\u0640",
-    "tau": "\u03C4",
-    "tav": "\u05EA",
-    "tavdages": "\uFB4A",
-    "tavdagesh": "\uFB4A",
-    "tavdageshhebrew": "\uFB4A",
-    "tavhebrew": "\u05EA",
+    "tau": "\u03c4",
+    "tav": "\u05ea",
+    "tavdages": "\ufb4a",
+    "tavdagesh": "\ufb4a",
+    "tavdageshhebrew": "\ufb4a",
+    "tavhebrew": "\u05ea",
     "tbar": "\u0167",
-    "tbopomofo": "\u310A",
+    "tbopomofo": "\u310a",
     "tcaron": "\u0165",
-    "tccurl": "\u02A8",
+    "tccurl": "\u02a8",
     "tcedilla": "\u0163",
     "tcheharabic": "\u0686",
-    "tchehfinalarabic": "\uFB7B",
-    "tchehinitialarabic": "\uFB7C",
-    "tchehmedialarabic": "\uFB7D",
-    "tchehmeeminitialarabic": "\uFB7C\uFEE4",
-    "tcircle": "\u24E3",
-    "tcircumflexbelow": "\u1E71",
+    "tchehfinalarabic": "\ufb7b",
+    "tchehinitialarabic": "\ufb7c",
+    "tchehmedialarabic": "\ufb7d",
+    "tchehmeeminitialarabic": "\ufb7c\ufee4",
+    "tcircle": "\u24e3",
+    "tcircumflexbelow": "\u1e71",
     "tcommaaccent": "\u0163",
-    "tdieresis": "\u1E97",
-    "tdotaccent": "\u1E6B",
-    "tdotbelow": "\u1E6D",
+    "tdieresis": "\u1e97",
+    "tdotaccent": "\u1e6b",
+    "tdotbelow": "\u1e6d",
     "tecyrillic": "\u0442",
-    "tedescendercyrillic": "\u04AD",
-    "teharabic": "\u062A",
-    "tehfinalarabic": "\uFE96",
-    "tehhahinitialarabic": "\uFCA2",
-    "tehhahisolatedarabic": "\uFC0C",
-    "tehinitialarabic": "\uFE97",
+    "tedescendercyrillic": "\u04ad",
+    "teharabic": "\u062a",
+    "tehfinalarabic": "\ufe96",
+    "tehhahinitialarabic": "\ufca2",
+    "tehhahisolatedarabic": "\ufc0c",
+    "tehinitialarabic": "\ufe97",
     "tehiragana": "\u3066",
-    "tehjeeminitialarabic": "\uFCA1",
-    "tehjeemisolatedarabic": "\uFC0B",
+    "tehjeeminitialarabic": "\ufca1",
+    "tehjeemisolatedarabic": "\ufc0b",
     "tehmarbutaarabic": "\u0629",
-    "tehmarbutafinalarabic": "\uFE94",
-    "tehmedialarabic": "\uFE98",
-    "tehmeeminitialarabic": "\uFCA4",
-    "tehmeemisolatedarabic": "\uFC0E",
-    "tehnoonfinalarabic": "\uFC73",
-    "tekatakana": "\u30C6",
-    "tekatakanahalfwidth": "\uFF83",
+    "tehmarbutafinalarabic": "\ufe94",
+    "tehmedialarabic": "\ufe98",
+    "tehmeeminitialarabic": "\ufca4",
+    "tehmeemisolatedarabic": "\ufc0e",
+    "tehnoonfinalarabic": "\ufc73",
+    "tekatakana": "\u30c6",
+    "tekatakanahalfwidth": "\uff83",
     "telephone": "\u2121",
-    "telephoneblack": "\u260E",
-    "telishagedolahebrew": "\u05A0",
-    "telishaqetanahebrew": "\u05A9",
+    "telephoneblack": "\u260e",
+    "telishagedolahebrew": "\u05a0",
+    "telishaqetanahebrew": "\u05a9",
     "tencircle": "\u2469",
     "tenideographicparen": "\u3229",
-    "tenparen": "\u247D",
+    "tenparen": "\u247d",
     "tenperiod": "\u2491",
     "tenroman": "\u2179",
-    "tesh": "\u02A7",
-    "tet": "\u05D8",
-    "tetdagesh": "\uFB38",
-    "tetdageshhebrew": "\uFB38",
-    "tethebrew": "\u05D8",
-    "tetsecyrillic": "\u04B5",
-    "tevirhebrew": "\u059B",
-    "tevirlefthebrew": "\u059B",
-    "thabengali": "\u09A5",
+    "tesh": "\u02a7",
+    "tet": "\u05d8",
+    "tetdagesh": "\ufb38",
+    "tetdageshhebrew": "\ufb38",
+    "tethebrew": "\u05d8",
+    "tetsecyrillic": "\u04b5",
+    "tevirhebrew": "\u059b",
+    "tevirlefthebrew": "\u059b",
+    "thabengali": "\u09a5",
     "thadeva": "\u0925",
-    "thagujarati": "\u0AA5",
-    "thagurmukhi": "\u0A25",
+    "thagujarati": "\u0aa5",
+    "thagurmukhi": "\u0a25",
     "thalarabic": "\u0630",
-    "thalfinalarabic": "\uFEAC",
-    "thanthakhatlowleftthai": "\uF898",
-    "thanthakhatlowrightthai": "\uF897",
-    "thanthakhatthai": "\u0E4C",
-    "thanthakhatupperleftthai": "\uF896",
-    "theharabic": "\u062B",
-    "thehfinalarabic": "\uFE9A",
-    "thehinitialarabic": "\uFE9B",
-    "thehmedialarabic": "\uFE9C",
+    "thalfinalarabic": "\ufeac",
+    "thanthakhatlowleftthai": "\uf898",
+    "thanthakhatlowrightthai": "\uf897",
+    "thanthakhatthai": "\u0e4c",
+    "thanthakhatupperleftthai": "\uf896",
+    "theharabic": "\u062b",
+    "thehfinalarabic": "\ufe9a",
+    "thehinitialarabic": "\ufe9b",
+    "thehmedialarabic": "\ufe9c",
     "thereexists": "\u2203",
     "therefore": "\u2234",
-    "theta": "\u03B8",
-    "theta1": "\u03D1",
-    "thetasymbolgreek": "\u03D1",
+    "theta": "\u03b8",
+    "theta1": "\u03d1",
+    "thetasymbolgreek": "\u03d1",
     "thieuthacirclekorean": "\u3279",
     "thieuthaparenkorean": "\u3219",
-    "thieuthcirclekorean": "\u326B",
-    "thieuthkorean": "\u314C",
-    "thieuthparenkorean": "\u320B",
-    "thirteencircle": "\u246C",
+    "thieuthcirclekorean": "\u326b",
+    "thieuthkorean": "\u314c",
+    "thieuthparenkorean": "\u320b",
+    "thirteencircle": "\u246c",
     "thirteenparen": "\u2480",
     "thirteenperiod": "\u2494",
-    "thonangmonthothai": "\u0E11",
-    "thook": "\u01AD",
-    "thophuthaothai": "\u0E12",
-    "thorn": "\u00FE",
-    "thothahanthai": "\u0E17",
-    "thothanthai": "\u0E10",
-    "thothongthai": "\u0E18",
-    "thothungthai": "\u0E16",
+    "thonangmonthothai": "\u0e11",
+    "thook": "\u01ad",
+    "thophuthaothai": "\u0e12",
+    "thorn": "\u00fe",
+    "thothahanthai": "\u0e17",
+    "thothanthai": "\u0e10",
+    "thothongthai": "\u0e18",
+    "thothungthai": "\u0e16",
     "thousandcyrillic": "\u0482",
-    "thousandsseparatorarabic": "\u066C",
-    "thousandsseparatorpersian": "\u066C",
+    "thousandsseparatorarabic": "\u066c",
+    "thousandsseparatorpersian": "\u066c",
     "three": "\u0033",
     "threearabic": "\u0663",
-    "threebengali": "\u09E9",
+    "threebengali": "\u09e9",
     "threecircle": "\u2462",
-    "threecircleinversesansserif": "\u278C",
+    "threecircleinversesansserif": "\u278c",
     "threedeva": "\u0969",
-    "threeeighths": "\u215C",
-    "threegujarati": "\u0AE9",
-    "threegurmukhi": "\u0A69",
+    "threeeighths": "\u215c",
+    "threegujarati": "\u0ae9",
+    "threegurmukhi": "\u0a69",
     "threehackarabic": "\u0663",
     "threehangzhou": "\u3023",
     "threeideographicparen": "\u3222",
     "threeinferior": "\u2083",
-    "threemonospace": "\uFF13",
-    "threenumeratorbengali": "\u09F6",
-    "threeoldstyle": "\uF733",
+    "threemonospace": "\uff13",
+    "threenumeratorbengali": "\u09f6",
+    "threeoldstyle": "\uf733",
     "threeparen": "\u2476",
-    "threeperiod": "\u248A",
-    "threepersian": "\u06F3",
-    "threequarters": "\u00BE",
-    "threequartersemdash": "\uF6DE",
+    "threeperiod": "\u248a",
+    "threepersian": "\u06f3",
+    "threequarters": "\u00be",
+    "threequartersemdash": "\uf6de",
     "threeroman": "\u2172",
-    "threesuperior": "\u00B3",
-    "threethai": "\u0E53",
+    "threesuperior": "\u00b3",
+    "threethai": "\u0e53",
     "thzsquare": "\u3394",
     "tihiragana": "\u3061",
-    "tikatakana": "\u30C1",
-    "tikatakanahalfwidth": "\uFF81",
+    "tikatakana": "\u30c1",
+    "tikatakanahalfwidth": "\uff81",
     "tikeutacirclekorean": "\u3270",
     "tikeutaparenkorean": "\u3210",
     "tikeutcirclekorean": "\u3262",
     "tikeutkorean": "\u3137",
     "tikeutparenkorean": "\u3202",
-    "tilde": "\u02DC",
+    "tilde": "\u02dc",
     "tildebelowcmb": "\u0330",
     "tildecmb": "\u0303",
     "tildecomb": "\u0303",
     "tildedoublecmb": "\u0360",
-    "tildeoperator": "\u223C",
+    "tildeoperator": "\u223c",
     "tildeoverlaycmb": "\u0334",
-    "tildeverticalcmb": "\u033E",
+    "tildeverticalcmb": "\u033e",
     "timescircle": "\u2297",
     "tipehahebrew": "\u0596",
     "tipehalefthebrew": "\u0596",
-    "tippigurmukhi": "\u0A70",
+    "tippigurmukhi": "\u0a70",
     "titlocyrilliccmb": "\u0483",
-    "tiwnarmenian": "\u057F",
-    "tlinebelow": "\u1E6F",
-    "tmonospace": "\uFF54",
+    "tiwnarmenian": "\u057f",
+    "tlinebelow": "\u1e6f",
+    "tmonospace": "\uff54",
     "toarmenian": "\u0569",
     "tohiragana": "\u3068",
-    "tokatakana": "\u30C8",
-    "tokatakanahalfwidth": "\uFF84",
-    "tonebarextrahighmod": "\u02E5",
-    "tonebarextralowmod": "\u02E9",
-    "tonebarhighmod": "\u02E6",
-    "tonebarlowmod": "\u02E8",
-    "tonebarmidmod": "\u02E7",
-    "tonefive": "\u01BD",
+    "tokatakana": "\u30c8",
+    "tokatakanahalfwidth": "\uff84",
+    "tonebarextrahighmod": "\u02e5",
+    "tonebarextralowmod": "\u02e9",
+    "tonebarhighmod": "\u02e6",
+    "tonebarlowmod": "\u02e8",
+    "tonebarmidmod": "\u02e7",
+    "tonefive": "\u01bd",
     "tonesix": "\u0185",
-    "tonetwo": "\u01A8",
+    "tonetwo": "\u01a8",
     "tonos": "\u0384",
     "tonsquare": "\u3327",
-    "topatakthai": "\u0E0F",
+    "topatakthai": "\u0e0f",
     "tortoiseshellbracketleft": "\u3014",
-    "tortoiseshellbracketleftsmall": "\uFE5D",
-    "tortoiseshellbracketleftvertical": "\uFE39",
+    "tortoiseshellbracketleftsmall": "\ufe5d",
+    "tortoiseshellbracketleftvertical": "\ufe39",
     "tortoiseshellbracketright": "\u3015",
-    "tortoiseshellbracketrightsmall": "\uFE5E",
-    "tortoiseshellbracketrightvertical": "\uFE3A",
-    "totaothai": "\u0E15",
-    "tpalatalhook": "\u01AB",
-    "tparen": "\u24AF",
+    "tortoiseshellbracketrightsmall": "\ufe5e",
+    "tortoiseshellbracketrightvertical": "\ufe3a",
+    "totaothai": "\u0e15",
+    "tpalatalhook": "\u01ab",
+    "tparen": "\u24af",
     "trademark": "\u2122",
-    "trademarksans": "\uF8EA",
-    "trademarkserif": "\uF6DB",
+    "trademarksans": "\uf8ea",
+    "trademarkserif": "\uf6db",
     "tretroflexhook": "\u0288",
-    "triagdn": "\u25BC",
-    "triaglf": "\u25C4",
-    "triagrt": "\u25BA",
-    "triagup": "\u25B2",
-    "ts": "\u02A6",
-    "tsadi": "\u05E6",
-    "tsadidagesh": "\uFB46",
-    "tsadidageshhebrew": "\uFB46",
-    "tsadihebrew": "\u05E6",
+    "triagdn": "\u25bc",
+    "triaglf": "\u25c4",
+    "triagrt": "\u25ba",
+    "triagup": "\u25b2",
+    "ts": "\u02a6",
+    "tsadi": "\u05e6",
+    "tsadidagesh": "\ufb46",
+    "tsadidageshhebrew": "\ufb46",
+    "tsadihebrew": "\u05e6",
     "tsecyrillic": "\u0446",
-    "tsere": "\u05B5",
-    "tsere12": "\u05B5",
-    "tsere1e": "\u05B5",
-    "tsere2b": "\u05B5",
-    "tserehebrew": "\u05B5",
-    "tserenarrowhebrew": "\u05B5",
-    "tserequarterhebrew": "\u05B5",
-    "tserewidehebrew": "\u05B5",
-    "tshecyrillic": "\u045B",
-    "tsuperior": "\uF6F3",
-    "ttabengali": "\u099F",
-    "ttadeva": "\u091F",
-    "ttagujarati": "\u0A9F",
-    "ttagurmukhi": "\u0A1F",
+    "tsere": "\u05b5",
+    "tsere12": "\u05b5",
+    "tsere1e": "\u05b5",
+    "tsere2b": "\u05b5",
+    "tserehebrew": "\u05b5",
+    "tserenarrowhebrew": "\u05b5",
+    "tserequarterhebrew": "\u05b5",
+    "tserewidehebrew": "\u05b5",
+    "tshecyrillic": "\u045b",
+    "tsuperior": "\uf6f3",
+    "ttabengali": "\u099f",
+    "ttadeva": "\u091f",
+    "ttagujarati": "\u0a9f",
+    "ttagurmukhi": "\u0a1f",
     "tteharabic": "\u0679",
-    "ttehfinalarabic": "\uFB67",
-    "ttehinitialarabic": "\uFB68",
-    "ttehmedialarabic": "\uFB69",
-    "tthabengali": "\u09A0",
+    "ttehfinalarabic": "\ufb67",
+    "ttehinitialarabic": "\ufb68",
+    "ttehmedialarabic": "\ufb69",
+    "tthabengali": "\u09a0",
     "tthadeva": "\u0920",
-    "tthagujarati": "\u0AA0",
-    "tthagurmukhi": "\u0A20",
+    "tthagujarati": "\u0aa0",
+    "tthagurmukhi": "\u0a20",
     "tturned": "\u0287",
     "tuhiragana": "\u3064",
-    "tukatakana": "\u30C4",
-    "tukatakanahalfwidth": "\uFF82",
+    "tukatakana": "\u30c4",
+    "tukatakanahalfwidth": "\uff82",
     "tusmallhiragana": "\u3063",
-    "tusmallkatakana": "\u30C3",
-    "tusmallkatakanahalfwidth": "\uFF6F",
-    "twelvecircle": "\u246B",
-    "twelveparen": "\u247F",
+    "tusmallkatakana": "\u30c3",
+    "tusmallkatakanahalfwidth": "\uff6f",
+    "twelvecircle": "\u246b",
+    "twelveparen": "\u247f",
     "twelveperiod": "\u2493",
-    "twelveroman": "\u217B",
+    "twelveroman": "\u217b",
     "twentycircle": "\u2473",
     "twentyhangzhou": "\u5344",
     "twentyparen": "\u2487",
-    "twentyperiod": "\u249B",
+    "twentyperiod": "\u249b",
     "two": "\u0032",
     "twoarabic": "\u0662",
-    "twobengali": "\u09E8",
+    "twobengali": "\u09e8",
     "twocircle": "\u2461",
-    "twocircleinversesansserif": "\u278B",
+    "twocircleinversesansserif": "\u278b",
     "twodeva": "\u0968",
     "twodotenleader": "\u2025",
     "twodotleader": "\u2025",
-    "twodotleadervertical": "\uFE30",
-    "twogujarati": "\u0AE8",
-    "twogurmukhi": "\u0A68",
+    "twodotleadervertical": "\ufe30",
+    "twogujarati": "\u0ae8",
+    "twogurmukhi": "\u0a68",
     "twohackarabic": "\u0662",
     "twohangzhou": "\u3022",
     "twoideographicparen": "\u3221",
     "twoinferior": "\u2082",
-    "twomonospace": "\uFF12",
-    "twonumeratorbengali": "\u09F5",
-    "twooldstyle": "\uF732",
+    "twomonospace": "\uff12",
+    "twonumeratorbengali": "\u09f5",
+    "twooldstyle": "\uf732",
     "twoparen": "\u2475",
     "twoperiod": "\u2489",
-    "twopersian": "\u06F2",
+    "twopersian": "\u06f2",
     "tworoman": "\u2171",
-    "twostroke": "\u01BB",
-    "twosuperior": "\u00B2",
-    "twothai": "\u0E52",
+    "twostroke": "\u01bb",
+    "twosuperior": "\u00b2",
+    "twothai": "\u0e52",
     "twothirds": "\u2154",
     "u": "\u0075",
-    "uacute": "\u00FA",
+    "uacute": "\u00fa",
     "ubar": "\u0289",
     "ubengali": "\u0989",
     "ubopomofo": "\u3128",
-    "ubreve": "\u016D",
-    "ucaron": "\u01D4",
-    "ucircle": "\u24E4",
-    "ucircumflex": "\u00FB",
-    "ucircumflexbelow": "\u1E77",
+    "ubreve": "\u016d",
+    "ucaron": "\u01d4",
+    "ucircle": "\u24e4",
+    "ucircumflex": "\u00fb",
+    "ucircumflexbelow": "\u1e77",
     "ucyrillic": "\u0443",
     "udattadeva": "\u0951",
     "udblacute": "\u0171",
     "udblgrave": "\u0215",
     "udeva": "\u0909",
-    "udieresis": "\u00FC",
-    "udieresisacute": "\u01D8",
-    "udieresisbelow": "\u1E73",
-    "udieresiscaron": "\u01DA",
-    "udieresiscyrillic": "\u04F1",
-    "udieresisgrave": "\u01DC",
-    "udieresismacron": "\u01D6",
-    "udotbelow": "\u1EE5",
-    "ugrave": "\u00F9",
-    "ugujarati": "\u0A89",
-    "ugurmukhi": "\u0A09",
+    "udieresis": "\u00fc",
+    "udieresisacute": "\u01d8",
+    "udieresisbelow": "\u1e73",
+    "udieresiscaron": "\u01da",
+    "udieresiscyrillic": "\u04f1",
+    "udieresisgrave": "\u01dc",
+    "udieresismacron": "\u01d6",
+    "udotbelow": "\u1ee5",
+    "ugrave": "\u00f9",
+    "ugujarati": "\u0a89",
+    "ugurmukhi": "\u0a09",
     "uhiragana": "\u3046",
-    "uhookabove": "\u1EE7",
-    "uhorn": "\u01B0",
-    "uhornacute": "\u1EE9",
-    "uhorndotbelow": "\u1EF1",
-    "uhorngrave": "\u1EEB",
-    "uhornhookabove": "\u1EED",
-    "uhorntilde": "\u1EEF",
+    "uhookabove": "\u1ee7",
+    "uhorn": "\u01b0",
+    "uhornacute": "\u1ee9",
+    "uhorndotbelow": "\u1ef1",
+    "uhorngrave": "\u1eeb",
+    "uhornhookabove": "\u1eed",
+    "uhorntilde": "\u1eef",
     "uhungarumlaut": "\u0171",
-    "uhungarumlautcyrillic": "\u04F3",
+    "uhungarumlautcyrillic": "\u04f3",
     "uinvertedbreve": "\u0217",
-    "ukatakana": "\u30A6",
-    "ukatakanahalfwidth": "\uFF73",
+    "ukatakana": "\u30a6",
+    "ukatakanahalfwidth": "\uff73",
     "ukcyrillic": "\u0479",
-    "ukorean": "\u315C",
-    "umacron": "\u016B",
-    "umacroncyrillic": "\u04EF",
-    "umacrondieresis": "\u1E7B",
-    "umatragurmukhi": "\u0A41",
-    "umonospace": "\uFF55",
-    "underscore": "\u005F",
+    "ukorean": "\u315c",
+    "umacron": "\u016b",
+    "umacroncyrillic": "\u04ef",
+    "umacrondieresis": "\u1e7b",
+    "umatragurmukhi": "\u0a41",
+    "umonospace": "\uff55",
+    "underscore": "\u005f",
     "underscoredbl": "\u2017",
-    "underscoremonospace": "\uFF3F",
-    "underscorevertical": "\uFE33",
-    "underscorewavy": "\uFE4F",
-    "union": "\u222A",
+    "underscoremonospace": "\uff3f",
+    "underscorevertical": "\ufe33",
+    "underscorewavy": "\ufe4f",
+    "union": "\u222a",
     "universal": "\u2200",
     "uogonek": "\u0173",
-    "uparen": "\u24B0",
+    "uparen": "\u24b0",
     "upblock": "\u2580",
-    "upperdothebrew": "\u05C4",
-    "upsilon": "\u03C5",
-    "upsilondieresis": "\u03CB",
-    "upsilondieresistonos": "\u03B0",
-    "upsilonlatin": "\u028A",
-    "upsilontonos": "\u03CD",
-    "uptackbelowcmb": "\u031D",
-    "uptackmod": "\u02D4",
-    "uragurmukhi": "\u0A73",
-    "uring": "\u016F",
-    "ushortcyrillic": "\u045E",
+    "upperdothebrew": "\u05c4",
+    "upsilon": "\u03c5",
+    "upsilondieresis": "\u03cb",
+    "upsilondieresistonos": "\u03b0",
+    "upsilonlatin": "\u028a",
+    "upsilontonos": "\u03cd",
+    "uptackbelowcmb": "\u031d",
+    "uptackmod": "\u02d4",
+    "uragurmukhi": "\u0a73",
+    "uring": "\u016f",
+    "ushortcyrillic": "\u045e",
     "usmallhiragana": "\u3045",
-    "usmallkatakana": "\u30A5",
-    "usmallkatakanahalfwidth": "\uFF69",
-    "ustraightcyrillic": "\u04AF",
-    "ustraightstrokecyrillic": "\u04B1",
+    "usmallkatakana": "\u30a5",
+    "usmallkatakanahalfwidth": "\uff69",
+    "ustraightcyrillic": "\u04af",
+    "ustraightstrokecyrillic": "\u04b1",
     "utilde": "\u0169",
-    "utildeacute": "\u1E79",
-    "utildebelow": "\u1E75",
-    "uubengali": "\u098A",
-    "uudeva": "\u090A",
-    "uugujarati": "\u0A8A",
-    "uugurmukhi": "\u0A0A",
-    "uumatragurmukhi": "\u0A42",
-    "uuvowelsignbengali": "\u09C2",
+    "utildeacute": "\u1e79",
+    "utildebelow": "\u1e75",
+    "uubengali": "\u098a",
+    "uudeva": "\u090a",
+    "uugujarati": "\u0a8a",
+    "uugurmukhi": "\u0a0a",
+    "uumatragurmukhi": "\u0a42",
+    "uuvowelsignbengali": "\u09c2",
     "uuvowelsigndeva": "\u0942",
-    "uuvowelsigngujarati": "\u0AC2",
-    "uvowelsignbengali": "\u09C1",
+    "uuvowelsigngujarati": "\u0ac2",
+    "uvowelsignbengali": "\u09c1",
     "uvowelsigndeva": "\u0941",
-    "uvowelsigngujarati": "\u0AC1",
+    "uvowelsigngujarati": "\u0ac1",
     "v": "\u0076",
     "vadeva": "\u0935",
-    "vagujarati": "\u0AB5",
-    "vagurmukhi": "\u0A35",
-    "vakatakana": "\u30F7",
-    "vav": "\u05D5",
-    "vavdagesh": "\uFB35",
-    "vavdagesh65": "\uFB35",
-    "vavdageshhebrew": "\uFB35",
-    "vavhebrew": "\u05D5",
-    "vavholam": "\uFB4B",
-    "vavholamhebrew": "\uFB4B",
-    "vavvavhebrew": "\u05F0",
-    "vavyodhebrew": "\u05F1",
-    "vcircle": "\u24E5",
-    "vdotbelow": "\u1E7F",
+    "vagujarati": "\u0ab5",
+    "vagurmukhi": "\u0a35",
+    "vakatakana": "\u30f7",
+    "vav": "\u05d5",
+    "vavdagesh": "\ufb35",
+    "vavdagesh65": "\ufb35",
+    "vavdageshhebrew": "\ufb35",
+    "vavhebrew": "\u05d5",
+    "vavholam": "\ufb4b",
+    "vavholamhebrew": "\ufb4b",
+    "vavvavhebrew": "\u05f0",
+    "vavyodhebrew": "\u05f1",
+    "vcircle": "\u24e5",
+    "vdotbelow": "\u1e7f",
     "vecyrillic": "\u0432",
-    "veharabic": "\u06A4",
-    "vehfinalarabic": "\uFB6B",
-    "vehinitialarabic": "\uFB6C",
-    "vehmedialarabic": "\uFB6D",
-    "vekatakana": "\u30F9",
+    "veharabic": "\u06a4",
+    "vehfinalarabic": "\ufb6b",
+    "vehinitialarabic": "\ufb6c",
+    "vehmedialarabic": "\ufb6d",
+    "vekatakana": "\u30f9",
     "venus": "\u2640",
-    "verticalbar": "\u007C",
-    "verticallineabovecmb": "\u030D",
+    "verticalbar": "\u007c",
+    "verticallineabovecmb": "\u030d",
     "verticallinebelowcmb": "\u0329",
-    "verticallinelowmod": "\u02CC",
-    "verticallinemod": "\u02C8",
-    "vewarmenian": "\u057E",
-    "vhook": "\u028B",
-    "vikatakana": "\u30F8",
-    "viramabengali": "\u09CD",
-    "viramadeva": "\u094D",
-    "viramagujarati": "\u0ACD",
+    "verticallinelowmod": "\u02cc",
+    "verticallinemod": "\u02c8",
+    "vewarmenian": "\u057e",
+    "vhook": "\u028b",
+    "vikatakana": "\u30f8",
+    "viramabengali": "\u09cd",
+    "viramadeva": "\u094d",
+    "viramagujarati": "\u0acd",
     "visargabengali": "\u0983",
     "visargadeva": "\u0903",
-    "visargagujarati": "\u0A83",
-    "vmonospace": "\uFF56",
+    "visargagujarati": "\u0a83",
+    "vmonospace": "\uff56",
     "voarmenian": "\u0578",
-    "voicediterationhiragana": "\u309E",
-    "voicediterationkatakana": "\u30FE",
-    "voicedmarkkana": "\u309B",
-    "voicedmarkkanahalfwidth": "\uFF9E",
-    "vokatakana": "\u30FA",
-    "vparen": "\u24B1",
-    "vtilde": "\u1E7D",
-    "vturned": "\u028C",
+    "voicediterationhiragana": "\u309e",
+    "voicediterationkatakana": "\u30fe",
+    "voicedmarkkana": "\u309b",
+    "voicedmarkkanahalfwidth": "\uff9e",
+    "vokatakana": "\u30fa",
+    "vparen": "\u24b1",
+    "vtilde": "\u1e7d",
+    "vturned": "\u028c",
     "vuhiragana": "\u3094",
-    "vukatakana": "\u30F4",
+    "vukatakana": "\u30f4",
     "w": "\u0077",
-    "wacute": "\u1E83",
+    "wacute": "\u1e83",
     "waekorean": "\u3159",
-    "wahiragana": "\u308F",
-    "wakatakana": "\u30EF",
-    "wakatakanahalfwidth": "\uFF9C",
+    "wahiragana": "\u308f",
+    "wakatakana": "\u30ef",
+    "wakatakanahalfwidth": "\uff9c",
     "wakorean": "\u3158",
-    "wasmallhiragana": "\u308E",
-    "wasmallkatakana": "\u30EE",
+    "wasmallhiragana": "\u308e",
+    "wasmallkatakana": "\u30ee",
     "wattosquare": "\u3357",
-    "wavedash": "\u301C",
-    "wavyunderscorevertical": "\uFE34",
+    "wavedash": "\u301c",
+    "wavyunderscorevertical": "\ufe34",
     "wawarabic": "\u0648",
-    "wawfinalarabic": "\uFEEE",
+    "wawfinalarabic": "\ufeee",
     "wawhamzaabovearabic": "\u0624",
-    "wawhamzaabovefinalarabic": "\uFE86",
-    "wbsquare": "\u33DD",
-    "wcircle": "\u24E6",
+    "wawhamzaabovefinalarabic": "\ufe86",
+    "wbsquare": "\u33dd",
+    "wcircle": "\u24e6",
     "wcircumflex": "\u0175",
-    "wdieresis": "\u1E85",
-    "wdotaccent": "\u1E87",
-    "wdotbelow": "\u1E89",
+    "wdieresis": "\u1e85",
+    "wdotaccent": "\u1e87",
+    "wdotbelow": "\u1e89",
     "wehiragana": "\u3091",
     "weierstrass": "\u2118",
-    "wekatakana": "\u30F1",
-    "wekorean": "\u315E",
-    "weokorean": "\u315D",
-    "wgrave": "\u1E81",
-    "whitebullet": "\u25E6",
-    "whitecircle": "\u25CB",
-    "whitecircleinverse": "\u25D9",
-    "whitecornerbracketleft": "\u300E",
-    "whitecornerbracketleftvertical": "\uFE43",
-    "whitecornerbracketright": "\u300F",
-    "whitecornerbracketrightvertical": "\uFE44",
-    "whitediamond": "\u25C7",
-    "whitediamondcontainingblacksmalldiamond": "\u25C8",
-    "whitedownpointingsmalltriangle": "\u25BF",
-    "whitedownpointingtriangle": "\u25BD",
-    "whiteleftpointingsmalltriangle": "\u25C3",
-    "whiteleftpointingtriangle": "\u25C1",
+    "wekatakana": "\u30f1",
+    "wekorean": "\u315e",
+    "weokorean": "\u315d",
+    "wgrave": "\u1e81",
+    "whitebullet": "\u25e6",
+    "whitecircle": "\u25cb",
+    "whitecircleinverse": "\u25d9",
+    "whitecornerbracketleft": "\u300e",
+    "whitecornerbracketleftvertical": "\ufe43",
+    "whitecornerbracketright": "\u300f",
+    "whitecornerbracketrightvertical": "\ufe44",
+    "whitediamond": "\u25c7",
+    "whitediamondcontainingblacksmalldiamond": "\u25c8",
+    "whitedownpointingsmalltriangle": "\u25bf",
+    "whitedownpointingtriangle": "\u25bd",
+    "whiteleftpointingsmalltriangle": "\u25c3",
+    "whiteleftpointingtriangle": "\u25c1",
     "whitelenticularbracketleft": "\u3016",
     "whitelenticularbracketright": "\u3017",
-    "whiterightpointingsmalltriangle": "\u25B9",
-    "whiterightpointingtriangle": "\u25B7",
-    "whitesmallsquare": "\u25AB",
-    "whitesmilingface": "\u263A",
-    "whitesquare": "\u25A1",
+    "whiterightpointingsmalltriangle": "\u25b9",
+    "whiterightpointingtriangle": "\u25b7",
+    "whitesmallsquare": "\u25ab",
+    "whitesmilingface": "\u263a",
+    "whitesquare": "\u25a1",
     "whitestar": "\u2606",
-    "whitetelephone": "\u260F",
+    "whitetelephone": "\u260f",
     "whitetortoiseshellbracketleft": "\u3018",
     "whitetortoiseshellbracketright": "\u3019",
-    "whiteuppointingsmalltriangle": "\u25B5",
-    "whiteuppointingtriangle": "\u25B3",
+    "whiteuppointingsmalltriangle": "\u25b5",
+    "whiteuppointingtriangle": "\u25b3",
     "wihiragana": "\u3090",
-    "wikatakana": "\u30F0",
-    "wikorean": "\u315F",
-    "wmonospace": "\uFF57",
+    "wikatakana": "\u30f0",
+    "wikorean": "\u315f",
+    "wmonospace": "\uff57",
     "wohiragana": "\u3092",
-    "wokatakana": "\u30F2",
-    "wokatakanahalfwidth": "\uFF66",
-    "won": "\u20A9",
-    "wonmonospace": "\uFFE6",
-    "wowaenthai": "\u0E27",
-    "wparen": "\u24B2",
-    "wring": "\u1E98",
-    "wsuperior": "\u02B7",
-    "wturned": "\u028D",
-    "wynn": "\u01BF",
+    "wokatakana": "\u30f2",
+    "wokatakanahalfwidth": "\uff66",
+    "won": "\u20a9",
+    "wonmonospace": "\uffe6",
+    "wowaenthai": "\u0e27",
+    "wparen": "\u24b2",
+    "wring": "\u1e98",
+    "wsuperior": "\u02b7",
+    "wturned": "\u028d",
+    "wynn": "\u01bf",
     "x": "\u0078",
-    "xabovecmb": "\u033D",
+    "xabovecmb": "\u033d",
     "xbopomofo": "\u3112",
-    "xcircle": "\u24E7",
-    "xdieresis": "\u1E8D",
-    "xdotaccent": "\u1E8B",
-    "xeharmenian": "\u056D",
-    "xi": "\u03BE",
-    "xmonospace": "\uFF58",
-    "xparen": "\u24B3",
-    "xsuperior": "\u02E3",
+    "xcircle": "\u24e7",
+    "xdieresis": "\u1e8d",
+    "xdotaccent": "\u1e8b",
+    "xeharmenian": "\u056d",
+    "xi": "\u03be",
+    "xmonospace": "\uff58",
+    "xparen": "\u24b3",
+    "xsuperior": "\u02e3",
     "y": "\u0079",
-    "yaadosquare": "\u334E",
-    "yabengali": "\u09AF",
-    "yacute": "\u00FD",
-    "yadeva": "\u092F",
+    "yaadosquare": "\u334e",
+    "yabengali": "\u09af",
+    "yacute": "\u00fd",
+    "yadeva": "\u092f",
     "yaekorean": "\u3152",
-    "yagujarati": "\u0AAF",
-    "yagurmukhi": "\u0A2F",
+    "yagujarati": "\u0aaf",
+    "yagurmukhi": "\u0a2f",
     "yahiragana": "\u3084",
-    "yakatakana": "\u30E4",
-    "yakatakanahalfwidth": "\uFF94",
+    "yakatakana": "\u30e4",
+    "yakatakanahalfwidth": "\uff94",
     "yakorean": "\u3151",
-    "yamakkanthai": "\u0E4E",
+    "yamakkanthai": "\u0e4e",
     "yasmallhiragana": "\u3083",
-    "yasmallkatakana": "\u30E3",
-    "yasmallkatakanahalfwidth": "\uFF6C",
+    "yasmallkatakana": "\u30e3",
+    "yasmallkatakanahalfwidth": "\uff6c",
     "yatcyrillic": "\u0463",
-    "ycircle": "\u24E8",
+    "ycircle": "\u24e8",
     "ycircumflex": "\u0177",
-    "ydieresis": "\u00FF",
-    "ydotaccent": "\u1E8F",
-    "ydotbelow": "\u1EF5",
-    "yeharabic": "\u064A",
-    "yehbarreearabic": "\u06D2",
-    "yehbarreefinalarabic": "\uFBAF",
-    "yehfinalarabic": "\uFEF2",
+    "ydieresis": "\u00ff",
+    "ydotaccent": "\u1e8f",
+    "ydotbelow": "\u1ef5",
+    "yeharabic": "\u064a",
+    "yehbarreearabic": "\u06d2",
+    "yehbarreefinalarabic": "\ufbaf",
+    "yehfinalarabic": "\ufef2",
     "yehhamzaabovearabic": "\u0626",
-    "yehhamzaabovefinalarabic": "\uFE8A",
-    "yehhamzaaboveinitialarabic": "\uFE8B",
-    "yehhamzaabovemedialarabic": "\uFE8C",
-    "yehinitialarabic": "\uFEF3",
-    "yehmedialarabic": "\uFEF4",
-    "yehmeeminitialarabic": "\uFCDD",
-    "yehmeemisolatedarabic": "\uFC58",
-    "yehnoonfinalarabic": "\uFC94",
-    "yehthreedotsbelowarabic": "\u06D1",
+    "yehhamzaabovefinalarabic": "\ufe8a",
+    "yehhamzaaboveinitialarabic": "\ufe8b",
+    "yehhamzaabovemedialarabic": "\ufe8c",
+    "yehinitialarabic": "\ufef3",
+    "yehmedialarabic": "\ufef4",
+    "yehmeeminitialarabic": "\ufcdd",
+    "yehmeemisolatedarabic": "\ufc58",
+    "yehnoonfinalarabic": "\ufc94",
+    "yehthreedotsbelowarabic": "\u06d1",
     "yekorean": "\u3156",
-    "yen": "\u00A5",
-    "yenmonospace": "\uFFE5",
+    "yen": "\u00a5",
+    "yenmonospace": "\uffe5",
     "yeokorean": "\u3155",
     "yeorinhieuhkorean": "\u3186",
-    "yerahbenyomohebrew": "\u05AA",
-    "yerahbenyomolefthebrew": "\u05AA",
-    "yericyrillic": "\u044B",
-    "yerudieresiscyrillic": "\u04F9",
+    "yerahbenyomohebrew": "\u05aa",
+    "yerahbenyomolefthebrew": "\u05aa",
+    "yericyrillic": "\u044b",
+    "yerudieresiscyrillic": "\u04f9",
     "yesieungkorean": "\u3181",
     "yesieungpansioskorean": "\u3183",
     "yesieungsioskorean": "\u3182",
-    "yetivhebrew": "\u059A",
-    "ygrave": "\u1EF3",
-    "yhook": "\u01B4",
-    "yhookabove": "\u1EF7",
+    "yetivhebrew": "\u059a",
+    "ygrave": "\u1ef3",
+    "yhook": "\u01b4",
+    "yhookabove": "\u1ef7",
     "yiarmenian": "\u0575",
     "yicyrillic": "\u0457",
     "yikorean": "\u3162",
-    "yinyang": "\u262F",
+    "yinyang": "\u262f",
     "yiwnarmenian": "\u0582",
-    "ymonospace": "\uFF59",
-    "yod": "\u05D9",
-    "yoddagesh": "\uFB39",
-    "yoddageshhebrew": "\uFB39",
-    "yodhebrew": "\u05D9",
-    "yodyodhebrew": "\u05F2",
-    "yodyodpatahhebrew": "\uFB1F",
+    "ymonospace": "\uff59",
+    "yod": "\u05d9",
+    "yoddagesh": "\ufb39",
+    "yoddageshhebrew": "\ufb39",
+    "yodhebrew": "\u05d9",
+    "yodyodhebrew": "\u05f2",
+    "yodyodpatahhebrew": "\ufb1f",
     "yohiragana": "\u3088",
     "yoikorean": "\u3189",
-    "yokatakana": "\u30E8",
-    "yokatakanahalfwidth": "\uFF96",
-    "yokorean": "\u315B",
+    "yokatakana": "\u30e8",
+    "yokatakanahalfwidth": "\uff96",
+    "yokorean": "\u315b",
     "yosmallhiragana": "\u3087",
-    "yosmallkatakana": "\u30E7",
-    "yosmallkatakanahalfwidth": "\uFF6E",
-    "yotgreek": "\u03F3",
+    "yosmallkatakana": "\u30e7",
+    "yosmallkatakanahalfwidth": "\uff6e",
+    "yotgreek": "\u03f3",
     "yoyaekorean": "\u3188",
     "yoyakorean": "\u3187",
-    "yoyakthai": "\u0E22",
-    "yoyingthai": "\u0E0D",
-    "yparen": "\u24B4",
-    "ypogegrammeni": "\u037A",
+    "yoyakthai": "\u0e22",
+    "yoyingthai": "\u0e0d",
+    "yparen": "\u24b4",
+    "ypogegrammeni": "\u037a",
     "ypogegrammenigreekcmb": "\u0345",
-    "yr": "\u01A6",
-    "yring": "\u1E99",
-    "ysuperior": "\u02B8",
-    "ytilde": "\u1EF9",
-    "yturned": "\u028E",
+    "yr": "\u01a6",
+    "yring": "\u1e99",
+    "ysuperior": "\u02b8",
+    "ytilde": "\u1ef9",
+    "yturned": "\u028e",
     "yuhiragana": "\u3086",
-    "yuikorean": "\u318C",
-    "yukatakana": "\u30E6",
-    "yukatakanahalfwidth": "\uFF95",
+    "yuikorean": "\u318c",
+    "yukatakana": "\u30e6",
+    "yukatakanahalfwidth": "\uff95",
     "yukorean": "\u3160",
-    "yusbigcyrillic": "\u046B",
-    "yusbigiotifiedcyrillic": "\u046D",
+    "yusbigcyrillic": "\u046b",
+    "yusbigiotifiedcyrillic": "\u046d",
     "yuslittlecyrillic": "\u0467",
     "yuslittleiotifiedcyrillic": "\u0469",
     "yusmallhiragana": "\u3085",
-    "yusmallkatakana": "\u30E5",
-    "yusmallkatakanahalfwidth": "\uFF6D",
-    "yuyekorean": "\u318B",
-    "yuyeokorean": "\u318A",
-    "yyabengali": "\u09DF",
-    "yyadeva": "\u095F",
-    "z": "\u007A",
+    "yusmallkatakana": "\u30e5",
+    "yusmallkatakanahalfwidth": "\uff6d",
+    "yuyekorean": "\u318b",
+    "yuyeokorean": "\u318a",
+    "yyabengali": "\u09df",
+    "yyadeva": "\u095f",
+    "z": "\u007a",
     "zaarmenian": "\u0566",
-    "zacute": "\u017A",
-    "zadeva": "\u095B",
-    "zagurmukhi": "\u0A5B",
+    "zacute": "\u017a",
+    "zadeva": "\u095b",
+    "zagurmukhi": "\u0a5b",
     "zaharabic": "\u0638",
-    "zahfinalarabic": "\uFEC6",
-    "zahinitialarabic": "\uFEC7",
+    "zahfinalarabic": "\ufec6",
+    "zahinitialarabic": "\ufec7",
     "zahiragana": "\u3056",
-    "zahmedialarabic": "\uFEC8",
+    "zahmedialarabic": "\ufec8",
     "zainarabic": "\u0632",
-    "zainfinalarabic": "\uFEB0",
-    "zakatakana": "\u30B6",
+    "zainfinalarabic": "\ufeb0",
+    "zakatakana": "\u30b6",
     "zaqefgadolhebrew": "\u0595",
     "zaqefqatanhebrew": "\u0594",
     "zarqahebrew": "\u0598",
-    "zayin": "\u05D6",
-    "zayindagesh": "\uFB36",
-    "zayindageshhebrew": "\uFB36",
-    "zayinhebrew": "\u05D6",
+    "zayin": "\u05d6",
+    "zayindagesh": "\ufb36",
+    "zayindageshhebrew": "\ufb36",
+    "zayinhebrew": "\u05d6",
     "zbopomofo": "\u3117",
-    "zcaron": "\u017E",
-    "zcircle": "\u24E9",
-    "zcircumflex": "\u1E91",
+    "zcaron": "\u017e",
+    "zcircle": "\u24e9",
+    "zcircumflex": "\u1e91",
     "zcurl": "\u0291",
-    "zdot": "\u017C",
-    "zdotaccent": "\u017C",
-    "zdotbelow": "\u1E93",
+    "zdot": "\u017c",
+    "zdotaccent": "\u017c",
+    "zdotbelow": "\u1e93",
     "zecyrillic": "\u0437",
     "zedescendercyrillic": "\u0499",
-    "zedieresiscyrillic": "\u04DF",
-    "zehiragana": "\u305C",
-    "zekatakana": "\u30BC",
+    "zedieresiscyrillic": "\u04df",
+    "zehiragana": "\u305c",
+    "zekatakana": "\u30bc",
     "zero": "\u0030",
     "zeroarabic": "\u0660",
-    "zerobengali": "\u09E6",
+    "zerobengali": "\u09e6",
     "zerodeva": "\u0966",
-    "zerogujarati": "\u0AE6",
-    "zerogurmukhi": "\u0A66",
+    "zerogujarati": "\u0ae6",
+    "zerogurmukhi": "\u0a66",
     "zerohackarabic": "\u0660",
     "zeroinferior": "\u2080",
-    "zeromonospace": "\uFF10",
-    "zerooldstyle": "\uF730",
-    "zeropersian": "\u06F0",
+    "zeromonospace": "\uff10",
+    "zerooldstyle": "\uf730",
+    "zeropersian": "\u06f0",
     "zerosuperior": "\u2070",
-    "zerothai": "\u0E50",
-    "zerowidthjoiner": "\uFEFF",
-    "zerowidthnonjoiner": "\u200C",
-    "zerowidthspace": "\u200B",
-    "zeta": "\u03B6",
+    "zerothai": "\u0e50",
+    "zerowidthjoiner": "\ufeff",
+    "zerowidthnonjoiner": "\u200c",
+    "zerowidthspace": "\u200b",
+    "zeta": "\u03b6",
     "zhbopomofo": "\u3113",
-    "zhearmenian": "\u056A",
-    "zhebrevecyrillic": "\u04C2",
+    "zhearmenian": "\u056a",
+    "zhebrevecyrillic": "\u04c2",
     "zhecyrillic": "\u0436",
     "zhedescendercyrillic": "\u0497",
-    "zhedieresiscyrillic": "\u04DD",
+    "zhedieresiscyrillic": "\u04dd",
     "zihiragana": "\u3058",
-    "zikatakana": "\u30B8",
-    "zinorhebrew": "\u05AE",
-    "zlinebelow": "\u1E95",
-    "zmonospace": "\uFF5A",
-    "zohiragana": "\u305E",
-    "zokatakana": "\u30BE",
-    "zparen": "\u24B5",
+    "zikatakana": "\u30b8",
+    "zinorhebrew": "\u05ae",
+    "zlinebelow": "\u1e95",
+    "zmonospace": "\uff5a",
+    "zohiragana": "\u305e",
+    "zokatakana": "\u30be",
+    "zparen": "\u24b5",
     "zretroflexhook": "\u0290",
-    "zstroke": "\u01B6",
-    "zuhiragana": "\u305A",
-    "zukatakana": "\u30BA",
+    "zstroke": "\u01b6",
+    "zuhiragana": "\u305a",
+    "zukatakana": "\u30ba",
 }
 # --end
diff --git a/pdfminer/high_level.py b/pdfminer/high_level.py
index 93ec2ed1..14722cdf 100644
--- a/pdfminer/high_level.py
+++ b/pdfminer/high_level.py
@@ -5,20 +5,20 @@
 from io import StringIO
 from typing import Any, BinaryIO, Container, Iterator, Optional, cast
 
-from .pdfexceptions import PDFValueError
-from .converter import (
-    XMLConverter,
+from pdfminer.converter import (
+    HOCRConverter,
     HTMLConverter,
-    TextConverter,
     PDFPageAggregator,
-    HOCRConverter,
+    TextConverter,
+    XMLConverter,
 )
-from .image import ImageWriter
-from .layout import LAParams, LTPage
-from .pdfdevice import PDFDevice, TagExtractor
-from .pdfinterp import PDFResourceManager, PDFPageInterpreter
-from .pdfpage import PDFPage
-from .utils import open_filename, FileOrName, AnyIO
+from pdfminer.image import ImageWriter
+from pdfminer.layout import LAParams, LTPage
+from pdfminer.pdfdevice import PDFDevice, TagExtractor
+from pdfminer.pdfexceptions import PDFValueError
+from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
+from pdfminer.pdfpage import PDFPage
+from pdfminer.utils import AnyIO, FileOrName, open_filename
 
 
 def extract_text_to_fp(
@@ -83,7 +83,11 @@ def extract_text_to_fp(
 
     if output_type == "text":
         device = TextConverter(
-            rsrcmgr, outfp, codec=codec, laparams=laparams, imagewriter=imagewriter
+            rsrcmgr,
+            outfp,
+            codec=codec,
+            laparams=laparams,
+            imagewriter=imagewriter,
         )
 
     elif output_type == "xml":
@@ -109,7 +113,11 @@ def extract_text_to_fp(
 
     elif output_type == "hocr":
         device = HOCRConverter(
-            rsrcmgr, outfp, codec=codec, laparams=laparams, stripcontrol=strip_control
+            rsrcmgr,
+            outfp,
+            codec=codec,
+            laparams=laparams,
+            stripcontrol=strip_control,
         )
 
     elif output_type == "tag":
@@ -117,7 +125,7 @@ def extract_text_to_fp(
         device = TagExtractor(rsrcmgr, cast(BinaryIO, outfp), codec=codec)
 
     else:
-        msg = f"Output type can be text, html, xml or tag but is " f"{output_type}"
+        msg = f"Output type can be text, html, xml or tag but is {output_type}"
         raise PDFValueError(msg)
 
     assert device is not None
@@ -207,7 +215,11 @@ def extract_pages(
         device = PDFPageAggregator(resource_manager, laparams=laparams)
         interpreter = PDFPageInterpreter(resource_manager, device)
         for page in PDFPage.get_pages(
-            fp, page_numbers, maxpages=maxpages, password=password, caching=caching
+            fp,
+            page_numbers,
+            maxpages=maxpages,
+            password=password,
+            caching=caching,
         ):
             interpreter.process_page(page)
             layout = device.get_result()
diff --git a/pdfminer/image.py b/pdfminer/image.py
index 52aec4bb..898f2707 100644
--- a/pdfminer/image.py
+++ b/pdfminer/image.py
@@ -10,18 +10,20 @@
     # Literal was introduced in Python 3.8
     from typing_extensions import Literal  # type: ignore[assignment]
 
-from .jbig2 import JBIG2StreamReader, JBIG2StreamWriter
-from .layout import LTImage
-from .pdfcolor import LITERAL_DEVICE_CMYK
-from .pdfcolor import LITERAL_DEVICE_GRAY
-from .pdfcolor import LITERAL_DEVICE_RGB
-from .pdftypes import (
+from pdfminer.jbig2 import JBIG2StreamReader, JBIG2StreamWriter
+from pdfminer.layout import LTImage
+from pdfminer.pdfcolor import (
+    LITERAL_DEVICE_CMYK,
+    LITERAL_DEVICE_GRAY,
+    LITERAL_DEVICE_RGB,
+)
+from pdfminer.pdfexceptions import PDFValueError
+from pdfminer.pdftypes import (
     LITERALS_DCT_DECODE,
+    LITERALS_FLATE_DECODE,
     LITERALS_JBIG2_DECODE,
     LITERALS_JPX_DECODE,
-    LITERALS_FLATE_DECODE,
 )
-from .pdfexceptions import PDFValueError
 
 PIL_ERROR_MESSAGE = (
     "Could not import Pillow. This dependency of pdfminer.six is not "
@@ -67,7 +69,13 @@ def __init__(self, fp: BinaryIO, bits: int, width: int, height: int) -> None:
         )
         assert len(info) == 40, str(len(info))
         header = struct.pack(
-            "<ccIHHI", b"B", b"M", headersize + self.datasize, 0, 0, headersize
+            "<ccIHHI",
+            b"B",
+            b"M",
+            headersize + self.datasize,
+            0,
+            0,
+            headersize,
         )
         assert len(header) == 14, str(len(header))
         self.fp.write(header)
@@ -203,7 +211,12 @@ def _save_jbig2(self, image: LTImage) -> str:
         return name
 
     def _save_bmp(
-        self, image: LTImage, width: int, height: int, bytes_per_line: int, bits: int
+        self,
+        image: LTImage,
+        width: int,
+        height: int,
+        bytes_per_line: int,
+        bits: int,
     ) -> str:
         """Save a BMP encoded image"""
         name, path = self._create_unique_image_name(image, ".bmp")
@@ -223,8 +236,10 @@ def _save_bytes(self, image: LTImage) -> str:
         channels = len(image.stream.get_data()) / width / height / (image.bits / 8)
         with open(path, "wb") as fp:
             try:
-                from PIL import Image  # type: ignore[import]
-                from PIL import ImageOps
+                from PIL import (
+                    Image,  # type: ignore[import]
+                    ImageOps,
+                )
             except ImportError:
                 raise ImportError(PIL_ERROR_MESSAGE)
 
diff --git a/pdfminer/jbig2.py b/pdfminer/jbig2.py
index f1e4f7ac..96a8392e 100644
--- a/pdfminer/jbig2.py
+++ b/pdfminer/jbig2.py
@@ -1,9 +1,9 @@
 import math
 import os
-from struct import pack, unpack, calcsize
+from struct import calcsize, pack, unpack
 from typing import BinaryIO, Dict, Iterable, List, Optional, Tuple, Union, cast
 
-from .pdfexceptions import PDFValueError
+from pdfminer.pdfexceptions import PDFValueError
 
 # segment structure base
 SEG_STRUCT = [
@@ -32,7 +32,7 @@
 SEG_TYPE_END_OF_FILE = 51
 
 # file literals
-FILE_HEADER_ID = b"\x97\x4A\x42\x32\x0D\x0A\x1A\x0A"
+FILE_HEADER_ID = b"\x97\x4a\x42\x32\x0d\x0a\x1a\x0a"
 FILE_HEAD_FLAG_SEQUENTIAL = 0b00000001
 
 
@@ -45,7 +45,7 @@ def check_flag(flag: int, value: int) -> bool:
 
 
 def masked_value(mask: int, value: int) -> int:
-    for bit_pos in range(0, 31):
+    for bit_pos in range(31):
         if bit_set(bit_pos, mask):
             return (value & mask) >> bit_pos
 
@@ -53,7 +53,7 @@ def masked_value(mask: int, value: int) -> int:
 
 
 def mask_value(mask: int, value: int) -> int:
-    for bit_pos in range(0, 31):
+    for bit_pos in range(31):
         if bit_set(bit_pos, mask):
             return (value & (mask >> bit_pos)) << bit_pos
 
@@ -69,7 +69,8 @@ def unpack_int(format: str, buffer: bytes) -> int:
 JBIG2SegmentFlags = Dict[str, Union[int, bool]]
 JBIG2RetentionFlags = Dict[str, Union[int, List[int], List[bool]]]
 JBIG2Segment = Dict[
-    str, Union[bool, int, bytes, JBIG2SegmentFlags, JBIG2RetentionFlags]
+    str,
+    Union[bool, int, bytes, JBIG2SegmentFlags, JBIG2RetentionFlags],
 ]
 
 
@@ -107,7 +108,10 @@ def is_eof(self) -> bool:
             return False
 
     def parse_flags(
-        self, segment: JBIG2Segment, flags: int, field: bytes
+        self,
+        segment: JBIG2Segment,
+        flags: int,
+        field: bytes,
     ) -> JBIG2SegmentFlags:
         return {
             "deferred": check_flag(HEADER_FLAG_DEFERRED, flags),
@@ -116,7 +120,10 @@ def parse_flags(
         }
 
     def parse_retention_flags(
-        self, segment: JBIG2Segment, flags: int, field: bytes
+        self,
+        segment: JBIG2Segment,
+        flags: int,
+        field: bytes,
     ) -> JBIG2RetentionFlags:
         ref_count = masked_value(REF_COUNT_SHORT_MASK, flags)
         retain_segments = []
@@ -164,16 +171,18 @@ def parse_page_assoc(self, segment: JBIG2Segment, page: int, field: bytes) -> in
         return page
 
     def parse_data_length(
-        self, segment: JBIG2Segment, length: int, field: bytes
+        self,
+        segment: JBIG2Segment,
+        length: int,
+        field: bytes,
     ) -> int:
         if length:
             if (
                 cast(JBIG2SegmentFlags, segment["flags"])["type"]
                 == SEG_TYPE_IMMEDIATE_GEN_REGION
             ) and (length == DATA_LEN_UNKNOWN):
-
                 raise NotImplementedError(
-                    "Working with unknown segment length " "is not implemented yet"
+                    "Working with unknown segment length is not implemented yet",
                 )
             else:
                 segment["raw_data"] = self.stream.read(length)
@@ -194,7 +203,9 @@ def __init__(self, stream: BinaryIO) -> None:
         self.stream = stream
 
     def write_segments(
-        self, segments: Iterable[JBIG2Segment], fix_last_page: bool = True
+        self,
+        segments: Iterable[JBIG2Segment],
+        fix_last_page: bool = True,
     ) -> int:
         data_len = 0
         current_page: Optional[int] = None
@@ -227,7 +238,9 @@ def write_segments(
         return data_len
 
     def write_file(
-        self, segments: Iterable[JBIG2Segment], fix_last_page: bool = True
+        self,
+        segments: Iterable[JBIG2Segment],
+        fix_last_page: bool = True,
     ) -> int:
         header = FILE_HEADER_ID
         header_flags = FILE_HEAD_FLAG_SEQUENTIAL
@@ -288,7 +301,9 @@ def encode_flags(self, value: JBIG2SegmentFlags, segment: JBIG2Segment) -> bytes
         return pack(">B", flags)
 
     def encode_retention_flags(
-        self, value: JBIG2RetentionFlags, segment: JBIG2Segment
+        self,
+        value: JBIG2RetentionFlags,
+        segment: JBIG2Segment,
     ) -> bytes:
         flags = []
         flags_format = ">B"
diff --git a/pdfminer/latin_enc.py b/pdfminer/latin_enc.py
index 6238745e..c5e83053 100644
--- a/pdfminer/latin_enc.py
+++ b/pdfminer/latin_enc.py
@@ -1,4 +1,4 @@
-""" Standard encoding tables used in PDF.
+"""Standard encoding tables used in PDF.
 
 This table is extracted from PDF Reference Manual 1.6, pp.925
   "D.1 Latin Character Set and Encodings"
diff --git a/pdfminer/layout.py b/pdfminer/layout.py
index 18592419..ee27b691 100644
--- a/pdfminer/layout.py
+++ b/pdfminer/layout.py
@@ -15,24 +15,26 @@
     cast,
 )
 
-from .pdfcolor import PDFColorSpace
-from .pdffont import PDFFont
-from .pdfinterp import Color
-from .pdfinterp import PDFGraphicState
-from .pdftypes import PDFStream
-from .pdfexceptions import PDFTypeError, PDFValueError
-from .utils import INF, PathSegment
-from .utils import LTComponentT
-from .utils import Matrix
-from .utils import Plane
-from .utils import Point
-from .utils import Rect
-from .utils import apply_matrix_pt
-from .utils import bbox2str
-from .utils import fsplit
-from .utils import get_bound
-from .utils import matrix2str
-from .utils import uniq
+from pdfminer.pdfcolor import PDFColorSpace
+from pdfminer.pdfexceptions import PDFTypeError, PDFValueError
+from pdfminer.pdffont import PDFFont
+from pdfminer.pdfinterp import Color, PDFGraphicState
+from pdfminer.pdftypes import PDFStream
+from pdfminer.utils import (
+    INF,
+    LTComponentT,
+    Matrix,
+    PathSegment,
+    Plane,
+    Point,
+    Rect,
+    apply_matrix_pt,
+    bbox2str,
+    fsplit,
+    get_bound,
+    matrix2str,
+    uniq,
+)
 
 logger = logging.getLogger(__name__)
 
@@ -101,7 +103,7 @@ def __init__(
     def _validate(self) -> None:
         if self.boxes_flow is not None:
             boxes_flow_err_msg = (
-                "LAParam boxes_flow should be None, or a " "number between -1 and +1"
+                "LAParam boxes_flow should be None, or a number between -1 and +1"
             )
             if not (
                 isinstance(self.boxes_flow, int) or isinstance(self.boxes_flow, float)
@@ -123,14 +125,13 @@ class LTItem:
 
     def analyze(self, laparams: LAParams) -> None:
         """Perform the layout analysis."""
-        pass
 
 
 class LTText:
     """Interface for things that have text"""
 
     def __repr__(self) -> str:
-        return "<{} {!r}>".format(self.__class__.__name__, self.get_text())
+        return f"<{self.__class__.__name__} {self.get_text()!r}>"
 
     def get_text(self) -> str:
         """Text contained in this object"""
@@ -145,7 +146,7 @@ def __init__(self, bbox: Rect) -> None:
         self.set_bbox(bbox)
 
     def __repr__(self) -> str:
-        return "<{} {}>".format(self.__class__.__name__, bbox2str(self.bbox))
+        return f"<{self.__class__.__name__} {bbox2str(self.bbox)}>"
 
     # Disable comparison.
     def __lt__(self, _: object) -> bool:
@@ -211,8 +212,7 @@ def voverlap(self, obj: "LTComponent") -> float:
 
 
 class LTCurve(LTComponent):
-    """
-    A generic Bezier curve
+    """A generic Bezier curve
 
     The parameter `original_path` contains the original
     pathing information from the pdf (e.g. for reconstructing Bezier Curves).
@@ -331,12 +331,7 @@ def __init__(self, name: str, stream: PDFStream, bbox: Rect) -> None:
             self.colorspace = [self.colorspace]
 
     def __repr__(self) -> str:
-        return "<{}({}) {} {!r}>".format(
-            self.__class__.__name__,
-            self.name,
-            bbox2str(self.bbox),
-            self.srcsize,
-        )
+        return f"<{self.__class__.__name__}({self.name}) {bbox2str(self.bbox)} {self.srcsize!r}>"
 
 
 class LTAnno(LTItem, LTText):
@@ -395,7 +390,7 @@ def __init__(
             bbox_lower_left = (0, descent + rise)
             bbox_upper_right = (self.adv, descent + rise + fontsize)
         (a, b, c, d, e, f) = self.matrix
-        self.upright = 0 < a * d * scaling and b * c <= 0
+        self.upright = a * d * scaling > 0 and b * c <= 0
         (x0, y0) = apply_matrix_pt(self.matrix, bbox_lower_left)
         (x1, y1) = apply_matrix_pt(self.matrix, bbox_upper_right)
         if x1 < x0:
@@ -409,14 +404,7 @@ def __init__(
             self.size = self.height
 
     def __repr__(self) -> str:
-        return "<{} {} matrix={} font={!r} adv={} text={!r}>".format(
-            self.__class__.__name__,
-            bbox2str(self.bbox),
-            matrix2str(self.matrix),
-            self.fontname,
-            self.adv,
-            self.get_text(),
-        )
+        return f"<{self.__class__.__name__} {bbox2str(self.bbox)} matrix={matrix2str(self.matrix)} font={self.fontname!r} adv={self.adv} text={self.get_text()!r}>"
 
     def get_text(self) -> str:
         return self._text
@@ -464,7 +452,7 @@ def add(self, obj: LTComponent) -> None:  # type: ignore[override]
                 min(self.y0, obj.y0),
                 max(self.x1, obj.x1),
                 max(self.y1, obj.y1),
-            )
+            ),
         )
 
 
@@ -494,11 +482,7 @@ def __init__(self, word_margin: float) -> None:
         self.word_margin = word_margin
 
     def __repr__(self) -> str:
-        return "<{} {} {!r}>".format(
-            self.__class__.__name__,
-            bbox2str(self.bbox),
-            self.get_text(),
-        )
+        return f"<{self.__class__.__name__} {bbox2str(self.bbox)} {self.get_text()!r}>"
 
     def analyze(self, laparams: LAParams) -> None:
         for obj in self._objs:
@@ -506,7 +490,9 @@ def analyze(self, laparams: LAParams) -> None:
         LTContainer.add(self, LTAnno("\n"))
 
     def find_neighbors(
-        self, plane: Plane[LTComponentT], ratio: float
+        self,
+        plane: Plane[LTComponentT],
+        ratio: float,
     ) -> List["LTTextLine"]:
         raise NotImplementedError
 
@@ -530,10 +516,11 @@ def add(self, obj: LTComponent) -> None:  # type: ignore[override]
         super().add(obj)
 
     def find_neighbors(
-        self, plane: Plane[LTComponentT], ratio: float
+        self,
+        plane: Plane[LTComponentT],
+        ratio: float,
     ) -> List[LTTextLine]:
-        """
-        Finds neighboring LTTextLineHorizontals in the plane.
+        """Finds neighboring LTTextLineHorizontals in the plane.
 
         Returns a list of other LTTestLineHorizontals in the plane which are
         close to self. "Close" can be controlled by ratio. The returned objects
@@ -557,23 +544,19 @@ def find_neighbors(
         ]
 
     def _is_left_aligned_with(self, other: LTComponent, tolerance: float = 0) -> bool:
-        """
-        Whether the left-hand edge of `other` is within `tolerance`.
-        """
+        """Whether the left-hand edge of `other` is within `tolerance`."""
         return abs(other.x0 - self.x0) <= tolerance
 
     def _is_right_aligned_with(self, other: LTComponent, tolerance: float = 0) -> bool:
-        """
-        Whether the right-hand edge of `other` is within `tolerance`.
-        """
+        """Whether the right-hand edge of `other` is within `tolerance`."""
         return abs(other.x1 - self.x1) <= tolerance
 
     def _is_centrally_aligned_with(
-        self, other: LTComponent, tolerance: float = 0
+        self,
+        other: LTComponent,
+        tolerance: float = 0,
     ) -> bool:
-        """
-        Whether the horizontal center of `other` is within `tolerance`.
-        """
+        """Whether the horizontal center of `other` is within `tolerance`."""
         return abs((other.x0 + other.x1) / 2 - (self.x0 + self.x1) / 2) <= tolerance
 
     def _is_same_height_as(self, other: LTComponent, tolerance: float = 0) -> bool:
@@ -596,10 +579,11 @@ def add(self, obj: LTComponent) -> None:  # type: ignore[override]
         super().add(obj)
 
     def find_neighbors(
-        self, plane: Plane[LTComponentT], ratio: float
+        self,
+        plane: Plane[LTComponentT],
+        ratio: float,
     ) -> List[LTTextLine]:
-        """
-        Finds neighboring LTTextLineVerticals in the plane.
+        """Finds neighboring LTTextLineVerticals in the plane.
 
         Returns a list of other LTTextLineVerticals in the plane which are
         close to self. "Close" can be controlled by ratio. The returned objects
@@ -623,23 +607,19 @@ def find_neighbors(
         ]
 
     def _is_lower_aligned_with(self, other: LTComponent, tolerance: float = 0) -> bool:
-        """
-        Whether the lower edge of `other` is within `tolerance`.
-        """
+        """Whether the lower edge of `other` is within `tolerance`."""
         return abs(other.y0 - self.y0) <= tolerance
 
     def _is_upper_aligned_with(self, other: LTComponent, tolerance: float = 0) -> bool:
-        """
-        Whether the upper edge of `other` is within `tolerance`.
-        """
+        """Whether the upper edge of `other` is within `tolerance`."""
         return abs(other.y1 - self.y1) <= tolerance
 
     def _is_centrally_aligned_with(
-        self, other: LTComponent, tolerance: float = 0
+        self,
+        other: LTComponent,
+        tolerance: float = 0,
     ) -> bool:
-        """
-        Whether the vertical center of `other` is within `tolerance`.
-        """
+        """Whether the vertical center of `other` is within `tolerance`."""
         return abs((other.y0 + other.y1) / 2 - (self.y0 + self.y1) / 2) <= tolerance
 
     def _is_same_width_as(self, other: LTComponent, tolerance: float) -> bool:
@@ -659,12 +639,7 @@ def __init__(self) -> None:
         self.index: int = -1
 
     def __repr__(self) -> str:
-        return "<{}({}) {} {!r}>".format(
-            self.__class__.__name__,
-            self.index,
-            bbox2str(self.bbox),
-            self.get_text(),
-        )
+        return f"<{self.__class__.__name__}({self.index}) {bbox2str(self.bbox)} {self.get_text()!r}>"
 
     def get_writing_mode(self) -> str:
         raise NotImplementedError
@@ -705,7 +680,7 @@ def analyze(self, laparams: LAParams) -> None:
         # reorder the objects from top-left to bottom-right.
         self._objs.sort(
             key=lambda obj: (1 - boxes_flow) * obj.x0
-            - (1 + boxes_flow) * (obj.y0 + obj.y1)
+            - (1 + boxes_flow) * (obj.y0 + obj.y1),
         )
 
 
@@ -717,7 +692,7 @@ def analyze(self, laparams: LAParams) -> None:
         # reorder the objects from top-right to bottom-left.
         self._objs.sort(
             key=lambda obj: -(1 + boxes_flow) * (obj.x0 + obj.x1)
-            - (1 - boxes_flow) * obj.y1
+            - (1 - boxes_flow) * obj.y1,
         )
 
 
@@ -728,7 +703,9 @@ def __init__(self, bbox: Rect) -> None:
 
     # group_objects: group text object to textlines.
     def group_objects(
-        self, laparams: LAParams, objs: Iterable[LTComponent]
+        self,
+        laparams: LAParams,
+        objs: Iterable[LTComponent],
     ) -> Iterator[LTTextLine]:
         obj0 = None
         line = None
@@ -778,25 +755,23 @@ def group_objects(
                 if (halign and isinstance(line, LTTextLineHorizontal)) or (
                     valign and isinstance(line, LTTextLineVertical)
                 ):
-
                     line.add(obj1)
                 elif line is not None:
                     yield line
                     line = None
+                elif valign and not halign:
+                    line = LTTextLineVertical(laparams.word_margin)
+                    line.add(obj0)
+                    line.add(obj1)
+                elif halign and not valign:
+                    line = LTTextLineHorizontal(laparams.word_margin)
+                    line.add(obj0)
+                    line.add(obj1)
                 else:
-                    if valign and not halign:
-                        line = LTTextLineVertical(laparams.word_margin)
-                        line.add(obj0)
-                        line.add(obj1)
-                    elif halign and not valign:
-                        line = LTTextLineHorizontal(laparams.word_margin)
-                        line.add(obj0)
-                        line.add(obj1)
-                    else:
-                        line = LTTextLineHorizontal(laparams.word_margin)
-                        line.add(obj0)
-                        yield line
-                        line = None
+                    line = LTTextLineHorizontal(laparams.word_margin)
+                    line.add(obj0)
+                    yield line
+                    line = None
             obj0 = obj1
         if line is None:
             line = LTTextLineHorizontal(laparams.word_margin)
@@ -805,7 +780,9 @@ def group_objects(
         yield line
 
     def group_textlines(
-        self, laparams: LAParams, lines: Iterable[LTTextLine]
+        self,
+        laparams: LAParams,
+        lines: Iterable[LTTextLine],
     ) -> Iterator[LTTextBox]:
         """Group neighboring lines to textboxes"""
         plane: Plane[LTTextLine] = Plane(self.bbox)
@@ -837,7 +814,9 @@ def group_textlines(
                 yield box
 
     def group_textboxes(
-        self, laparams: LAParams, boxes: Sequence[LTTextBox]
+        self,
+        laparams: LAParams,
+        boxes: Sequence[LTTextBox],
     ) -> List[LTTextGroup]:
         """Group textboxes hierarchically.
 
@@ -856,7 +835,6 @@ def group_textboxes(
         :param boxes: All textbox objects to be grouped.
         :return: a list that has only one element, the final top level group.
         """
-
         ElementT = Union[LTTextBox, LTTextGroup]
         plane: Plane[ElementT] = Plane(self.bbox)
 
@@ -909,7 +887,8 @@ def isany(obj1: ElementT, obj2: ElementT) -> Set[ElementT]:
                     heapq.heappush(dists, (True, d, id1, id2, obj1, obj2))
                     continue
                 if isinstance(obj1, (LTTextBoxVertical, LTTextGroupTBRL)) or isinstance(
-                    obj2, (LTTextBoxVertical, LTTextGroupTBRL)
+                    obj2,
+                    (LTTextBoxVertical, LTTextGroupTBRL),
                 ):
                     group: LTTextGroup = LTTextGroupTBRL([obj1, obj2])
                 else:
@@ -982,12 +961,7 @@ def __init__(self, name: str, bbox: Rect, matrix: Matrix) -> None:
         LTLayoutContainer.__init__(self, bbox)
 
     def __repr__(self) -> str:
-        return "<{}({}) {} matrix={}>".format(
-            self.__class__.__name__,
-            self.name,
-            bbox2str(self.bbox),
-            matrix2str(self.matrix),
-        )
+        return f"<{self.__class__.__name__}({self.name}) {bbox2str(self.bbox)} matrix={matrix2str(self.matrix)}>"
 
     def analyze(self, laparams: LAParams) -> None:
         if not laparams.all_texts:
@@ -1008,9 +982,4 @@ def __init__(self, pageid: int, bbox: Rect, rotate: float = 0) -> None:
         self.rotate = rotate
 
     def __repr__(self) -> str:
-        return "<{}({!r}) {} rotate={!r}>".format(
-            self.__class__.__name__,
-            self.pageid,
-            bbox2str(self.bbox),
-            self.rotate,
-        )
+        return f"<{self.__class__.__name__}({self.pageid!r}) {bbox2str(self.bbox)} rotate={self.rotate!r}>"
diff --git a/pdfminer/lzw.py b/pdfminer/lzw.py
index 30e303fc..8e9585a6 100644
--- a/pdfminer/lzw.py
+++ b/pdfminer/lzw.py
@@ -2,7 +2,7 @@
 from io import BytesIO
 from typing import BinaryIO, Iterator, List, Optional, cast
 
-from .pdfexceptions import PDFException, PDFEOFError
+from pdfminer.pdfexceptions import PDFEOFError, PDFException
 
 logger = logging.getLogger(__name__)
 
diff --git a/pdfminer/pdfcolor.py b/pdfminer/pdfcolor.py
index 81319e38..da402715 100644
--- a/pdfminer/pdfcolor.py
+++ b/pdfminer/pdfcolor.py
@@ -1,7 +1,7 @@
 import collections
 from typing import Dict
 
-from .psparser import LIT
+from pdfminer.psparser import LIT
 
 LITERAL_DEVICE_GRAY = LIT("DeviceGray")
 LITERAL_DEVICE_RGB = LIT("DeviceRGB")
@@ -19,7 +19,7 @@ def __repr__(self) -> str:
 
 PREDEFINED_COLORSPACE: Dict[str, PDFColorSpace] = collections.OrderedDict()
 
-for (name, n) in [
+for name, n in [
     ("DeviceGray", 1),  # default value first
     ("CalRGB", 3),
     ("CalGray", 1),
diff --git a/pdfminer/pdfdevice.py b/pdfminer/pdfdevice.py
index ebe60c03..2374601c 100644
--- a/pdfminer/pdfdevice.py
+++ b/pdfminer/pdfdevice.py
@@ -1,28 +1,29 @@
 from typing import (
+    TYPE_CHECKING,
     BinaryIO,
     Iterable,
     List,
     Optional,
     Sequence,
-    TYPE_CHECKING,
     Union,
     cast,
 )
 
+from pdfminer import utils
+from pdfminer.pdfcolor import PDFColorSpace
+from pdfminer.pdffont import PDFFont, PDFUnicodeNotDefined
+from pdfminer.pdfpage import PDFPage
+from pdfminer.pdftypes import PDFStream
 from pdfminer.psparser import PSLiteral
-from . import utils
-from .pdfcolor import PDFColorSpace
-from .pdffont import PDFFont
-from .pdffont import PDFUnicodeNotDefined
-from .pdfpage import PDFPage
-from .pdftypes import PDFStream
-from .utils import Matrix, Point, Rect, PathSegment
+from pdfminer.utils import Matrix, PathSegment, Point, Rect
 
 if TYPE_CHECKING:
-    from .pdfinterp import PDFGraphicState
-    from .pdfinterp import PDFResourceManager
-    from .pdfinterp import PDFTextState
-    from .pdfinterp import PDFStackT
+    from pdfminer.pdfinterp import (
+        PDFGraphicState,
+        PDFResourceManager,
+        PDFStackT,
+        PDFTextState,
+    )
 
 
 PDFTextSeq = Iterable[Union[int, float, bytes]]
@@ -241,7 +242,10 @@ def render_char(
 
 class TagExtractor(PDFDevice):
     def __init__(
-        self, rsrcmgr: "PDFResourceManager", outfp: BinaryIO, codec: str = "utf-8"
+        self,
+        rsrcmgr: "PDFResourceManager",
+        outfp: BinaryIO,
+        codec: str = "utf-8",
     ) -> None:
         PDFDevice.__init__(self, rsrcmgr)
         self.outfp = outfp
@@ -292,7 +296,7 @@ def begin_tag(self, tag: PSLiteral, props: Optional["PDFStackT"] = None) -> None
                 [
                     f' {utils.enc(k)}="{utils.make_compat_str(v)}"'
                     for (k, v) in sorted(props.items())
-                ]
+                ],
             )
         out_s = f"<{utils.enc(cast(str, tag.name))}{s}>"
         self._write(out_s)
diff --git a/pdfminer/pdfdocument.py b/pdfminer/pdfdocument.py
index 92c8dd41..1c063359 100644
--- a/pdfminer/pdfdocument.py
+++ b/pdfminer/pdfdocument.py
@@ -2,7 +2,7 @@
 import logging
 import re
 import struct
-from hashlib import sha256, md5, sha384, sha512
+from hashlib import md5, sha256, sha384, sha512
 from typing import (
     Any,
     Callable,
@@ -22,25 +22,36 @@
 from cryptography.hazmat.backends import default_backend
 from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
 
-from . import settings
-from .arcfour import Arcfour
-from .data_structures import NumberTree
-from .pdfparser import PDFSyntaxError, PDFParser, PDFStreamParser
-from .pdftypes import (
+from pdfminer import settings
+from pdfminer.arcfour import Arcfour
+from pdfminer.data_structures import NumberTree
+from pdfminer.pdfexceptions import (
+    PDFException,
+    PDFKeyError,
+    PDFObjectNotFound,
+    PDFTypeError,
+)
+from pdfminer.pdfparser import PDFParser, PDFStreamParser, PDFSyntaxError
+from pdfminer.pdftypes import (
     DecipherCallable,
     PDFStream,
     decipher_all,
+    dict_value,
     int_value,
-    str_value,
     list_value,
-    uint_value,
-    dict_value,
+    str_value,
     stream_value,
+    uint_value,
+)
+from pdfminer.psexceptions import PSEOF
+from pdfminer.psparser import KWD, LIT, literal_name
+from pdfminer.utils import (
+    choplist,
+    decode_text,
+    format_int_alpha,
+    format_int_roman,
+    nunpack,
 )
-from .pdfexceptions import PDFException, PDFTypeError, PDFObjectNotFound, PDFKeyError
-from .psparser import literal_name, LIT, KWD
-from .psexceptions import PSEOF
-from .utils import choplist, decode_text, nunpack, format_int_roman, format_int_alpha
 
 log = logging.getLogger(__name__)
 
@@ -55,8 +66,6 @@ class PDFNoValidXRefWarning(SyntaxWarning):
     Not used anymore because warnings.warn is replaced by logger.Logger.warn.
     """
 
-    pass
-
 
 class PDFNoOutlines(PDFException):
     pass
@@ -84,8 +93,6 @@ class PDFEncryptionWarning(UserWarning):
     Not used anymore because warnings.warn is replaced by logger.Logger.warn.
     """
 
-    pass
-
 
 class PDFTextExtractionNotAllowedWarning(UserWarning):
     """Legacy warning for PDF that does not allow extraction.
@@ -93,8 +100,6 @@ class PDFTextExtractionNotAllowedWarning(UserWarning):
     Not used anymore because warnings.warn is replaced by logger.Logger.warn.
     """
 
-    pass
-
 
 class PDFTextExtractionNotAllowed(PDFEncryptionError):
     pass
@@ -160,9 +165,7 @@ def load(self, parser: PDFParser) -> None:
                     raise PDFNoValidXRef("Unexpected EOF - file corrupted?")
                 f = line.split(b" ")
                 if len(f) != 3:
-                    error_msg = "Invalid XRef format: {!r}, line={!r}".format(
-                        parser, line
-                    )
+                    error_msg = f"Invalid XRef format: {parser!r}, line={line!r}"
                     raise PDFNoValidXRef(error_msg)
                 (pos_b, genno_b, use_b) = f
                 if use_b != b"n":
@@ -286,7 +289,7 @@ def get_trailer(self) -> Dict[str, Any]:
         return self.trailer
 
     def get_objids(self) -> Iterator[int]:
-        for (start, nobjs) in self.ranges:
+        for start, nobjs in self.ranges:
             for i in range(nobjs):
                 assert self.entlen is not None
                 assert self.data is not None
@@ -298,7 +301,7 @@ def get_objids(self) -> Iterator[int]:
 
     def get_pos(self, objid: int) -> Tuple[Optional[int], int, int]:
         index = 0
-        for (start, nobjs) in self.ranges:
+        for start, nobjs in self.ranges:
             if start <= objid and objid < start + nobjs:
                 index += objid - start
                 break
@@ -324,7 +327,6 @@ def get_pos(self, objid: int) -> Tuple[Optional[int], int, int]:
 
 
 class PDFStandardSecurityHandler:
-
     PASSWORD_PADDING = (
         b"(\xbfN^Nu\x8aAd\x00NV\xff\xfa\x01\x08"
         b"..\x00\xb6\xd0h>\x80/\x0c\xa9\xfedSiz"
@@ -332,7 +334,10 @@ class PDFStandardSecurityHandler:
     supported_revisions: Tuple[int, ...] = (2, 3)
 
     def __init__(
-        self, docid: Sequence[bytes], param: Dict[str, Any], password: str = ""
+        self,
+        docid: Sequence[bytes],
+        param: Dict[str, Any],
+        password: str = "",
     ) -> None:
         self.docid = docid
         self.param = param
@@ -461,7 +466,6 @@ def decrypt_rc4(self, objid: int, genno: int, data: bytes) -> bytes:
 
 
 class PDFStandardSecurityHandlerV4(PDFStandardSecurityHandler):
-
     supported_revisions: Tuple[int, ...] = (4,)
 
     def init_params(self) -> None:
@@ -534,7 +538,6 @@ def decrypt_aes128(self, objid: int, genno: int, data: bytes) -> bytes:
 
 
 class PDFStandardSecurityHandlerV5(PDFStandardSecurityHandlerV4):
-
     supported_revisions = (5, 6)
 
     def init_params(self) -> None:
@@ -561,14 +564,18 @@ def authenticate(self, password: str) -> Optional[bytes]:
         if hash == self.o_hash:
             hash = self._password_hash(password_b, self.o_key_salt, self.u)
             cipher = Cipher(
-                algorithms.AES(hash), modes.CBC(b"\0" * 16), backend=default_backend()
+                algorithms.AES(hash),
+                modes.CBC(b"\0" * 16),
+                backend=default_backend(),
             )  # type: ignore
             return cipher.decryptor().update(self.oe)  # type: ignore
         hash = self._password_hash(password_b, self.u_validation_salt)
         if hash == self.u_hash:
             hash = self._password_hash(password_b, self.u_key_salt)
             cipher = Cipher(
-                algorithms.AES(hash), modes.CBC(b"\0" * 16), backend=default_backend()
+                algorithms.AES(hash),
+                modes.CBC(b"\0" * 16),
+                backend=default_backend(),
             )  # type: ignore
             return cipher.decryptor().update(self.ue)  # type: ignore
         return None
@@ -578,27 +585,29 @@ def _normalize_password(self, password: str) -> bytes:
             # saslprep expects non-empty strings, apparently
             if not password:
                 return b""
-            from ._saslprep import saslprep
+            from pdfminer._saslprep import saslprep
 
             password = saslprep(password)
         return password.encode("utf-8")[:127]
 
     def _password_hash(
-        self, password: bytes, salt: bytes, vector: Optional[bytes] = None
+        self,
+        password: bytes,
+        salt: bytes,
+        vector: Optional[bytes] = None,
     ) -> bytes:
-        """
-        Compute password hash depending on revision number
-        """
+        """Compute password hash depending on revision number"""
         if self.r == 5:
             return self._r5_password(password, salt, vector)
         return self._r6_password(password, salt[0:8], vector)
 
     def _r5_password(
-        self, password: bytes, salt: bytes, vector: Optional[bytes] = None
+        self,
+        password: bytes,
+        salt: bytes,
+        vector: Optional[bytes] = None,
     ) -> bytes:
-        """
-        Compute the password for revision 5
-        """
+        """Compute the password for revision 5"""
         hash = sha256(password)
         hash.update(salt)
         if vector is not None:
@@ -606,11 +615,12 @@ def _r5_password(
         return hash.digest()
 
     def _r6_password(
-        self, password: bytes, salt: bytes, vector: Optional[bytes] = None
+        self,
+        password: bytes,
+        salt: bytes,
+        vector: Optional[bytes] = None,
     ) -> bytes:
-        """
-        Compute the password for revision 6
-        """
+        """Compute the password for revision 6"""
         initial_hash = sha256(password)
         initial_hash.update(salt)
         if vector is not None:
@@ -678,7 +688,7 @@ def __init__(
         caching: bool = True,
         fallback: bool = True,
     ) -> None:
-        "Set the document to use a given PDFParser object."
+        """Set the document to use a given PDFParser object."""
         self.caching = caching
         self.xrefs: List[PDFBaseXRef] = []
         self.info = []
@@ -876,8 +886,7 @@ def search(entry: object, level: int) -> Iterator[PDFDocument.OutlineType]:
         return search(self.catalog["Outlines"], 0)
 
     def get_page_labels(self) -> Iterator[str]:
-        """
-        Generate page label strings for the PDF document.
+        """Generate page label strings for the PDF document.
 
         If the document includes page labels, generates strings, one per page.
         If not, raises PDFNoPageLabels.
@@ -909,7 +918,7 @@ def lookup(d: Dict[str, Any]) -> Any:
             if "Names" in d:
                 objs = list_value(d["Names"])
                 names = dict(
-                    cast(Iterator[Tuple[Union[str, bytes], Any]], choplist(2, objs))
+                    cast(Iterator[Tuple[Union[str, bytes], Any]], choplist(2, objs)),
                 )
                 return names[key]
             if "Kids" in d:
@@ -964,7 +973,10 @@ def find_xref(self, parser: PDFParser) -> int:
 
     # read xref table
     def read_xref_from(
-        self, parser: PDFParser, start: int, xrefs: List[PDFBaseXRef]
+        self,
+        parser: PDFParser,
+        start: int,
+        xrefs: List[PDFBaseXRef],
     ) -> None:
         """Reads XRefs from the given location."""
         parser.seek(start)
@@ -1015,7 +1027,7 @@ def labels(self) -> Iterator[str]:
                 # Try to cope, by assuming empty labels for the initial pages
                 ranges.insert(0, (0, {}))
 
-        for (next, (start, label_dict_unchecked)) in enumerate(ranges, 1):
+        for next, (start, label_dict_unchecked) in enumerate(ranges, 1):
             label_dict = dict_value(label_dict_unchecked)
             style = label_dict.get("S")
             prefix = decode_text(str_value(label_dict.get("P", b"")))
diff --git a/pdfminer/pdffont.py b/pdfminer/pdffont.py
index 932b97ee..e1df40c2 100644
--- a/pdfminer/pdffont.py
+++ b/pdfminer/pdffont.py
@@ -2,6 +2,7 @@
 import struct
 from io import BytesIO
 from typing import (
+    TYPE_CHECKING,
     Any,
     BinaryIO,
     Dict,
@@ -13,43 +14,44 @@
     Tuple,
     Union,
     cast,
-    TYPE_CHECKING,
 )
 
-from . import settings
-from .cmapdb import CMap
-from .cmapdb import CMapBase
-from .cmapdb import CMapDB
-from .cmapdb import CMapParser
-from .cmapdb import FileUnicodeMap
-from .cmapdb import IdentityUnicodeMap
-from .cmapdb import UnicodeMap
-from .encodingdb import EncodingDB
-from .encodingdb import name2unicode
-from .fontmetrics import FONT_METRICS
-from .pdftypes import PDFStream
-from pdfminer.pdfexceptions import PDFException, PDFValueError, PDFKeyError
-from .pdftypes import dict_value
-from .pdftypes import int_value
-from .pdftypes import list_value
-from .pdftypes import num_value
-from .pdftypes import resolve1, resolve_all
-from .pdftypes import stream_value
-from .psparser import KWD
+from pdfminer import settings
+from pdfminer.cmapdb import (
+    CMap,
+    CMapBase,
+    CMapDB,
+    CMapParser,
+    FileUnicodeMap,
+    IdentityUnicodeMap,
+    UnicodeMap,
+)
+from pdfminer.encodingdb import EncodingDB, name2unicode
+from pdfminer.fontmetrics import FONT_METRICS
+from pdfminer.pdfexceptions import PDFException, PDFKeyError, PDFValueError
+from pdfminer.pdftypes import (
+    PDFStream,
+    dict_value,
+    int_value,
+    list_value,
+    num_value,
+    resolve1,
+    resolve_all,
+    stream_value,
+)
 from pdfminer.psexceptions import PSEOF
-from .psparser import LIT
-from .psparser import PSKeyword
-from .psparser import PSLiteral
-from .psparser import PSStackParser
-from .psparser import literal_name
-from .utils import Matrix, Point
-from .utils import Rect
-from .utils import apply_matrix_norm
-from .utils import choplist
-from .utils import nunpack
+from pdfminer.psparser import (
+    KWD,
+    LIT,
+    PSKeyword,
+    PSLiteral,
+    PSStackParser,
+    literal_name,
+)
+from pdfminer.utils import Matrix, Point, Rect, apply_matrix_norm, choplist, nunpack
 
 if TYPE_CHECKING:
-    from .pdfinterp import PDFResourceManager
+    from pdfminer.pdfinterp import PDFResourceManager
 
 log = logging.getLogger(__name__)
 
@@ -62,7 +64,7 @@ def get_widths(seq: Iterable[object]) -> Dict[int, float]:
         if isinstance(v, list):
             if r:
                 char1 = r[-1]
-                for (i, w) in enumerate(v):
+                for i, w in enumerate(v):
                     widths[cast(int, char1) + i] = w
                 r = []
         elif isinstance(v, (int, float)):  # == utils.isnumber(v)
@@ -83,7 +85,7 @@ def get_widths2(seq: Iterable[object]) -> Dict[int, Tuple[float, Point]]:
         if isinstance(v, list):
             if r:
                 char1 = r[-1]
-                for (i, (w, vx, vy)) in enumerate(choplist(3, v)):
+                for i, (w, vx, vy) in enumerate(choplist(3, v)):
                     widths[cast(int, char1) + i] = (w, (vx, vy))
                 r = []
         elif isinstance(v, (int, float)):  # == utils.isnumber(v)
@@ -104,7 +106,6 @@ def get_metrics(cls, fontname: str) -> Tuple[Dict[str, object], Dict[str, int]]:
 
 # int here means that we're not extending PSStackParser with additional types.
 class Type1FontHeaderParser(PSStackParser[int]):
-
     KEYWORD_BEGIN = KWD(b"begin")
     KEYWORD_END = KWD(b"end")
     KEYWORD_DEF = KWD(b"def")
@@ -186,17 +187,17 @@ def getdict(data: bytes) -> Dict[int, List[Union[float, int]]]:
                         assert nibble is not None
                         s += nibble
             value = float(s)
-        elif 32 <= b0 and b0 <= 246:
+        elif b0 >= 32 and b0 <= 246:
             value = b0 - 139
         else:
             b1 = ord(fp.read(1))
-            if 247 <= b0 and b0 <= 250:
+            if b0 >= 247 and b0 <= 250:
                 value = ((b0 - 247) << 8) + b1 + 108
-            elif 251 <= b0 and b0 <= 254:
+            elif b0 >= 251 and b0 <= 254:
                 value = -((b0 - 251) << 8) - b1 - 108
             else:
                 b2 = ord(fp.read(1))
-                if 128 <= b1:
+                if b1 >= 128:
                     b1 -= 256
                 if b0 == 28:
                     value = b1 << 8 | b2
@@ -207,7 +208,6 @@ def getdict(data: bytes) -> Dict[int, List[Union[float, int]]]:
 
 
 class CFFFont:
-
     STANDARD_STRINGS = (
         ".notdef",
         "space",
@@ -656,7 +656,7 @@ def __init__(self, name: str, fp: BinaryIO) -> None:
         if format == b"\x00":
             # Format 0
             (n,) = struct.unpack("B", self.fp.read(1))
-            for (code, gid) in enumerate(struct.unpack("B" * n, self.fp.read(n))):
+            for code, gid in enumerate(struct.unpack("B" * n, self.fp.read(n))):
                 self.code2gid[code] = gid
                 self.gid2code[gid] = code
         elif format == b"\x01":
@@ -679,8 +679,10 @@ def __init__(self, name: str, fp: BinaryIO) -> None:
         if format == b"\x00":
             # Format 0
             n = self.nglyphs - 1
-            for (gid, sid) in enumerate(
-                cast(Tuple[int, ...], struct.unpack(">" + "H" * n, self.fp.read(2 * n)))
+            for gid, sid in enumerate(
+                cast(
+                    Tuple[int, ...], struct.unpack(">" + "H" * n, self.fp.read(2 * n))
+                ),
             ):
                 gid += 1
                 sidname = self.getstr(sid)
@@ -722,11 +724,13 @@ def __init__(self, name: str, fp: BinaryIO) -> None:
         self.fonttype = fp.read(4)
         try:
             (ntables, _1, _2, _3) = cast(
-                Tuple[int, int, int, int], struct.unpack(">HHHH", fp.read(8))
+                Tuple[int, int, int, int],
+                struct.unpack(">HHHH", fp.read(8)),
             )
             for _ in range(ntables):
                 (name_bytes, tsum, offset, length) = cast(
-                    Tuple[bytes, int, int, int], struct.unpack(">4sLLL", fp.read(16))
+                    Tuple[bytes, int, int, int],
+                    struct.unpack(">4sLLL", fp.read(16)),
                 )
                 self.tables[name_bytes] = (offset, length)
         except struct.error:
@@ -745,40 +749,43 @@ def create_unicode_map(self) -> FileUnicodeMap:
         subtables: List[Tuple[int, int, int]] = []
         for i in range(nsubtables):
             subtables.append(
-                cast(Tuple[int, int, int], struct.unpack(">HHL", fp.read(8)))
+                cast(Tuple[int, int, int], struct.unpack(">HHL", fp.read(8))),
             )
         char2gid: Dict[int, int] = {}
         # Only supports subtable type 0, 2 and 4.
-        for (platform_id, encoding_id, st_offset) in subtables:
+        for platform_id, encoding_id, st_offset in subtables:
             # Skip non-Unicode cmaps.
             # https://docs.microsoft.com/en-us/typography/opentype/spec/cmap
             if not (platform_id == 0 or (platform_id == 3 and encoding_id in [1, 10])):
                 continue
             fp.seek(base_offset + st_offset)
             (fmttype, fmtlen, fmtlang) = cast(
-                Tuple[int, int, int], struct.unpack(">HHH", fp.read(6))
+                Tuple[int, int, int],
+                struct.unpack(">HHH", fp.read(6)),
             )
             if fmttype == 0:
                 char2gid.update(
                     enumerate(
-                        cast(Tuple[int, ...], struct.unpack(">256B", fp.read(256)))
-                    )
+                        cast(Tuple[int, ...], struct.unpack(">256B", fp.read(256))),
+                    ),
                 )
             elif fmttype == 2:
                 subheaderkeys = cast(
-                    Tuple[int, ...], struct.unpack(">256H", fp.read(512))
+                    Tuple[int, ...],
+                    struct.unpack(">256H", fp.read(512)),
                 )
                 firstbytes = [0] * 8192
-                for (i, k) in enumerate(subheaderkeys):
+                for i, k in enumerate(subheaderkeys):
                     firstbytes[k // 8] = i
                 nhdrs = max(subheaderkeys) // 8 + 1
                 hdrs: List[Tuple[int, int, int, int, int]] = []
                 for i in range(nhdrs):
                     (firstcode, entcount, delta, offset) = cast(
-                        Tuple[int, int, int, int], struct.unpack(">HHhH", fp.read(8))
+                        Tuple[int, int, int, int],
+                        struct.unpack(">HHhH", fp.read(8)),
                     )
                     hdrs.append((i, firstcode, entcount, delta, fp.tell() - 2 + offset))
-                for (i, firstcode, entcount, delta, pos) in hdrs:
+                for i, firstcode, entcount, delta, pos in hdrs:
                     if not entcount:
                         continue
                     first = firstcode + (firstbytes[i] << 8)
@@ -790,7 +797,8 @@ def create_unicode_map(self) -> FileUnicodeMap:
                         char2gid[first + c] = gid
             elif fmttype == 4:
                 (segcount, _1, _2, _3) = cast(
-                    Tuple[int, int, int, int], struct.unpack(">HHHH", fp.read(8))
+                    Tuple[int, int, int, int],
+                    struct.unpack(">HHHH", fp.read(8)),
                 )
                 segcount //= 2
                 ecs = cast(
@@ -811,7 +819,7 @@ def create_unicode_map(self) -> FileUnicodeMap:
                     Tuple[int, ...],
                     struct.unpack(">%dH" % segcount, fp.read(2 * segcount)),
                 )
-                for (ec, sc, idd, idr) in zip(ecs, scs, idds, idrs):
+                for ec, sc, idd, idr in zip(ecs, scs, idds, idrs):
                     if idr:
                         fp.seek(pos + idr)
                         for c in range(sc, ec + 1):
@@ -826,7 +834,7 @@ def create_unicode_map(self) -> FileUnicodeMap:
             raise TrueTypeFont.CMapNotFound
         # create unicode map
         unicode_map = FileUnicodeMap()
-        for (char, gid) in char2gid.items():
+        for char, gid in char2gid.items():
             unicode_map.add_cid2unichr(gid, char)
         return unicode_map
 
@@ -870,7 +878,8 @@ def __init__(
         self.default_width = resolve1(self.default_width)
         self.leading = num_value(descriptor.get("Leading", 0))
         self.bbox = cast(
-            Rect, list_value(resolve_all(descriptor.get("FontBBox", (0, 0, 0, 0))))
+            Rect,
+            list_value(resolve_all(descriptor.get("FontBBox", (0, 0, 0, 0)))),
         )
         self.hscale = self.vscale = 0.001
 
@@ -926,7 +935,7 @@ def char_width(self, cid: int) -> float:
                 return self.default_width * self.hscale
 
     def char_disp(self, cid: int) -> Union[float, Tuple[Optional[float], float]]:
-        "Returns an integer for horizontal fonts, a tuple for vertical fonts."
+        """Returns an integer for horizontal fonts, a tuple for vertical fonts."""
         return 0
 
     def string_width(self, s: bytes) -> float:
@@ -1048,10 +1057,10 @@ def __init__(
             self.basefont = "unknown"
         self.cidsysteminfo = dict_value(spec.get("CIDSystemInfo", {}))
         cid_registry = resolve1(self.cidsysteminfo.get("Registry", b"unknown")).decode(
-            "latin1"
+            "latin1",
         )
         cid_ordering = resolve1(self.cidsysteminfo.get("Ordering", b"unknown")).decode(
-            "latin1"
+            "latin1",
         )
         self.cidcoding = f"{cid_registry.strip()}-{cid_ordering.strip()}"
         self.cmap: CMapBase = self.get_cmap_from_spec(spec, strict)
@@ -1090,7 +1099,8 @@ def __init__(
         else:
             try:
                 self.unicode_map = CMapDB.get_unicode_map(
-                    self.cidcoding, self.cmap.is_vertical()
+                    self.cidcoding,
+                    self.cmap.is_vertical(),
                 )
             except CMapDB.CMapNotFound:
                 pass
@@ -1149,16 +1159,13 @@ def _get_cmap_name(spec: Mapping[str, Any], strict: bool) -> str:
             cmap_name_stream: PDFStream = cast(PDFStream, cmap_name)
             if "CMapName" in cmap_name_stream:
                 cmap_name = cmap_name_stream.get("CMapName").name
-            else:
-                if strict:
-                    raise PDFFontError("CMapName unspecified for encoding")
+            elif strict:
+                raise PDFFontError("CMapName unspecified for encoding")
 
         return IDENTITY_ENCODER.get(cmap_name, cmap_name)
 
     def __repr__(self) -> str:
-        return "<PDFCIDFont: basefont={!r}, cidcoding={!r}>".format(
-            self.basefont, self.cidcoding
-        )
+        return f"<PDFCIDFont: basefont={self.basefont!r}, cidcoding={self.cidcoding!r}>"
 
     def is_vertical(self) -> bool:
         return self.vertical
@@ -1170,7 +1177,7 @@ def decode(self, bytes: bytes) -> Iterable[int]:
         return self.cmap.decode(bytes)
 
     def char_disp(self, cid: int) -> Union[float, Tuple[Optional[float], float]]:
-        "Returns an integer for horizontal fonts, a tuple for vertical fonts."
+        """Returns an integer for horizontal fonts, a tuple for vertical fonts."""
         return self.disps.get(cid, self.default_disp)
 
     def to_unichr(self, cid: int) -> str:
diff --git a/pdfminer/pdfinterp.py b/pdfminer/pdfinterp.py
index 393f8ad4..8ad06a7a 100644
--- a/pdfminer/pdfinterp.py
+++ b/pdfminer/pdfinterp.py
@@ -3,41 +3,48 @@
 from io import BytesIO
 from typing import Dict, List, Mapping, Optional, Sequence, Tuple, Union, cast
 
-from . import settings
-from .cmapdb import CMap
-from .cmapdb import CMapBase
-from .cmapdb import CMapDB
-from .pdfcolor import PDFColorSpace
-from .pdfcolor import PREDEFINED_COLORSPACE
-from .pdfdevice import PDFDevice
-from .pdfdevice import PDFTextSeq
-from .pdffont import PDFCIDFont
-from .pdffont import PDFFont
-from .pdffont import PDFFontError
-from .pdffont import PDFTrueTypeFont
-from .pdffont import PDFType1Font
-from .pdffont import PDFType3Font
-from .pdfpage import PDFPage
-from .pdftypes import PDFObjRef
-from .pdfexceptions import PDFException
-from .pdftypes import PDFStream
-from .pdftypes import dict_value
-from .pdftypes import list_value
-from .pdftypes import resolve1
-from .pdftypes import stream_value
-from .psparser import KWD
-from .psexceptions import PSEOF, PSTypeError
-from .psparser import LIT
-from .psparser import PSKeyword
-from .psparser import PSLiteral
-from .psparser import PSStackParser
-from .psparser import PSStackType
-from .psparser import keyword_name
-from .psparser import literal_name
-from .utils import MATRIX_IDENTITY
-from .utils import Matrix, Point, PathSegment, Rect
-from .utils import choplist
-from .utils import mult_matrix
+from pdfminer import settings
+from pdfminer.cmapdb import CMap, CMapBase, CMapDB
+from pdfminer.pdfcolor import PREDEFINED_COLORSPACE, PDFColorSpace
+from pdfminer.pdfdevice import PDFDevice, PDFTextSeq
+from pdfminer.pdfexceptions import PDFException
+from pdfminer.pdffont import (
+    PDFCIDFont,
+    PDFFont,
+    PDFFontError,
+    PDFTrueTypeFont,
+    PDFType1Font,
+    PDFType3Font,
+)
+from pdfminer.pdfpage import PDFPage
+from pdfminer.pdftypes import (
+    PDFObjRef,
+    PDFStream,
+    dict_value,
+    list_value,
+    resolve1,
+    stream_value,
+)
+from pdfminer.psexceptions import PSEOF, PSTypeError
+from pdfminer.psparser import (
+    KWD,
+    LIT,
+    PSKeyword,
+    PSLiteral,
+    PSStackParser,
+    PSStackType,
+    keyword_name,
+    literal_name,
+)
+from pdfminer.utils import (
+    MATRIX_IDENTITY,
+    Matrix,
+    PathSegment,
+    Point,
+    Rect,
+    choplist,
+    mult_matrix,
+)
 
 log = logging.getLogger(__name__)
 
@@ -181,9 +188,7 @@ def __init__(self, caching: bool = True) -> None:
 
     def get_procset(self, procs: Sequence[object]) -> None:
         for proc in procs:
-            if proc is LITERAL_PDF:
-                pass
-            elif proc is LITERAL_TEXT:
+            if proc is LITERAL_PDF or proc is LITERAL_TEXT:
                 pass
             else:
                 pass
@@ -286,9 +291,12 @@ def get_inline_data(self, pos: int, target: bytes = b"EI") -> Tuple[int, bytes]:
                 c = bytes((ci,))
                 data += c
                 self.charpos += 1
-                if len(target) <= i and c.isspace():
-                    i += 1
-                elif i < len(target) and c == (bytes((target[i],))):
+                if (
+                    len(target) <= i
+                    and c.isspace()
+                    or i < len(target)
+                    and c == (bytes((target[i],)))
+                ):
                     i += 1
                 else:
                     i = 0
@@ -365,31 +373,31 @@ def get_colorspace(spec: object) -> Optional[PDFColorSpace]:
                 name = literal_name(spec[0])
             else:
                 name = literal_name(spec)
-            if name == "ICCBased" and isinstance(spec, list) and 2 <= len(spec):
+            if name == "ICCBased" and isinstance(spec, list) and len(spec) >= 2:
                 return PDFColorSpace(name, stream_value(spec[1])["N"])
-            elif name == "DeviceN" and isinstance(spec, list) and 2 <= len(spec):
+            elif name == "DeviceN" and isinstance(spec, list) and len(spec) >= 2:
                 return PDFColorSpace(name, len(list_value(spec[1])))
             else:
                 return PREDEFINED_COLORSPACE.get(name)
 
-        for (k, v) in dict_value(resources).items():
+        for k, v in dict_value(resources).items():
             log.debug("Resource: %r: %r", k, v)
             if k == "Font":
-                for (fontid, spec) in dict_value(v).items():
+                for fontid, spec in dict_value(v).items():
                     objid = None
                     if isinstance(spec, PDFObjRef):
                         objid = spec.objid
                     spec = dict_value(spec)
                     self.fontmap[fontid] = self.rsrcmgr.get_font(objid, spec)
             elif k == "ColorSpace":
-                for (csid, spec) in dict_value(v).items():
+                for csid, spec in dict_value(v).items():
                     colorspace = get_colorspace(resolve1(spec))
                     if colorspace is not None:
                         self.csmap[csid] = colorspace
             elif k == "ProcSet":
                 self.rsrcmgr.get_procset(list_value(v))
             elif k == "XObject":
-                for (xobjid, xobjstrm) in dict_value(v).items():
+                for xobjid, xobjstrm in dict_value(v).items():
                     self.xobjmap[xobjid] = xobjstrm
 
     def init_state(self, ctm: Matrix) -> None:
@@ -423,7 +431,8 @@ def get_current_state(self) -> Tuple[Matrix, PDFTextState, PDFGraphicState]:
         return (self.ctm, self.textstate.copy(), self.graphicstate.copy())
 
     def set_current_state(
-        self, state: Tuple[Matrix, PDFTextState, PDFGraphicState]
+        self,
+        state: Tuple[Matrix, PDFTextState, PDFGraphicState],
     ) -> None:
         (self.ctm, self.textstate, self.graphicstate) = state
         self.device.set_ctm(self.ctm)
@@ -480,7 +489,7 @@ def do_i(self, flatness: PDFStackT) -> None:
 
     def do_gs(self, name: PDFStackT) -> None:
         """Set parameters from graphics state parameter dictionary"""
-        # todo
+        # TODO
 
     def do_m(self, x: PDFStackT, y: PDFStackT) -> None:
         """Begin new subpath"""
@@ -509,19 +518,19 @@ def do_c(
                 cast(float, y2),
                 cast(float, x3),
                 cast(float, y3),
-            )
+            ),
         )
 
     def do_v(self, x2: PDFStackT, y2: PDFStackT, x3: PDFStackT, y3: PDFStackT) -> None:
         """Append curved segment to path (initial point replicated)"""
         self.curpath.append(
-            ("v", cast(float, x2), cast(float, y2), cast(float, x3), cast(float, y3))
+            ("v", cast(float, x2), cast(float, y2), cast(float, x3), cast(float, y3)),
         )
 
     def do_y(self, x1: PDFStackT, y1: PDFStackT, x3: PDFStackT, y3: PDFStackT) -> None:
         """Append curved segment to path (final point replicated)"""
         self.curpath.append(
-            ("y", cast(float, x1), cast(float, y1), cast(float, x3), cast(float, y3))
+            ("y", cast(float, x1), cast(float, y1), cast(float, x3), cast(float, y3)),
         )
 
     def do_h(self) -> None:
@@ -832,7 +841,10 @@ def do_TJ(self, seq: PDFStackT) -> None:
             return
         assert self.ncs is not None
         self.device.render_string(
-            self.textstate, cast(PDFTextSeq, seq), self.ncs, self.graphicstate.copy()
+            self.textstate,
+            cast(PDFTextSeq, seq),
+            self.ncs,
+            self.graphicstate.copy(),
         )
 
     def do_Tj(self, s: PDFStackT) -> None:
@@ -895,7 +907,9 @@ def do_Do(self, xobjid_arg: PDFStackT) -> None:
                 resources = self.resources.copy()
             self.device.begin_figure(xobjid, bbox, matrix)
             interpreter.render_contents(
-                resources, [xobj], ctm=mult_matrix(matrix, self.ctm)
+                resources,
+                [xobj],
+                ctm=mult_matrix(matrix, self.ctm),
             )
             self.device.end_figure(xobjid)
         elif subtype is LITERAL_IMAGE and "Width" in xobj and "Height" in xobj:
@@ -932,7 +946,10 @@ def render_contents(
         This method may be called recursively.
         """
         log.debug(
-            "render_contents: resources=%r, streams=%r, ctm=%r", resources, streams, ctm
+            "render_contents: resources=%r, streams=%r, ctm=%r",
+            resources,
+            streams,
+            ctm,
         )
         self.init_resources(resources)
         self.init_state(ctm)
@@ -952,7 +969,8 @@ def execute(self, streams: Sequence[object]) -> None:
             if isinstance(obj, PSKeyword):
                 name = keyword_name(obj)
                 method = "do_%s" % name.replace("*", "_a").replace('"', "_w").replace(
-                    "'", "_q"
+                    "'",
+                    "_q",
                 )
                 if hasattr(self, method):
                     func = getattr(self, method)
@@ -965,9 +983,8 @@ def execute(self, streams: Sequence[object]) -> None:
                     else:
                         log.debug("exec: %s", name)
                         func()
-                else:
-                    if settings.STRICT:
-                        error_msg = "Unknown operator: %r" % name
-                        raise PDFInterpreterError(error_msg)
+                elif settings.STRICT:
+                    error_msg = "Unknown operator: %r" % name
+                    raise PDFInterpreterError(error_msg)
             else:
                 self.push(obj)
diff --git a/pdfminer/pdfpage.py b/pdfminer/pdfpage.py
index 9a6fdaf7..bd78cb29 100644
--- a/pdfminer/pdfpage.py
+++ b/pdfminer/pdfpage.py
@@ -1,17 +1,18 @@
 import itertools
 import logging
-from typing import BinaryIO, Container, Dict, Iterator, List, Optional, Tuple, Any
-
+from typing import Any, BinaryIO, Container, Dict, Iterator, List, Optional, Tuple
+
+from pdfminer import settings
+from pdfminer.pdfdocument import (
+    PDFDocument,
+    PDFNoPageLabels,
+    PDFTextExtractionNotAllowed,
+)
+from pdfminer.pdfexceptions import PDFObjectNotFound, PDFValueError
+from pdfminer.pdfparser import PDFParser
+from pdfminer.pdftypes import dict_value, int_value, list_value, resolve1
+from pdfminer.psparser import LIT
 from pdfminer.utils import parse_rect
-from . import settings
-from .pdfdocument import PDFDocument, PDFTextExtractionNotAllowed, PDFNoPageLabels
-from .pdfparser import PDFParser
-from .pdftypes import dict_value
-from .pdfexceptions import PDFObjectNotFound, PDFValueError
-from .pdftypes import int_value
-from .pdftypes import list_value
-from .pdftypes import resolve1
-from .psparser import LIT
 
 log = logging.getLogger(__name__)
 
@@ -27,7 +28,8 @@ class PDFPage:
     of keys and values, which describe the properties of a page
     and point to its contents.
 
-    Attributes:
+    Attributes
+    ----------
       doc: a PDFDocument object.
       pageid: any Python object that can uniquely identify the page.
       attrs: a dictionary of page attributes.
@@ -40,10 +42,15 @@ class PDFPage:
       annots: the page annotations.
       beads: a chain that represents natural reading order.
       label: the page's label (typically, the logical page number).
+
     """
 
     def __init__(
-        self, doc: PDFDocument, pageid: object, attrs: object, label: Optional[str]
+        self,
+        doc: PDFDocument,
+        pageid: object,
+        attrs: object,
+        label: Optional[str],
     ) -> None:
         """Initialize a page object.
 
@@ -58,7 +65,7 @@ def __init__(
         self.label = label
         self.lastmod = resolve1(self.attrs.get("LastModified"))
         self.resources: Dict[object, object] = resolve1(
-            self.attrs.get("Resources", dict())
+            self.attrs.get("Resources", dict()),
         )
         mediabox_params: List[Any] = [
             resolve1(mediabox_param) for mediabox_param in self.attrs["MediaBox"]
@@ -83,16 +90,15 @@ def __init__(
         self.contents: List[object] = contents
 
     def __repr__(self) -> str:
-        return "<PDFPage: Resources={!r}, MediaBox={!r}>".format(
-            self.resources, self.mediabox
-        )
+        return f"<PDFPage: Resources={self.resources!r}, MediaBox={self.mediabox!r}>"
 
     INHERITABLE_ATTRS = {"Resources", "MediaBox", "CropBox", "Rotate"}
 
     @classmethod
     def create_pages(cls, document: PDFDocument) -> Iterator["PDFPage"]:
         def search(
-            obj: object, parent: Dict[str, object]
+            obj: object,
+            parent: Dict[str, object],
         ) -> Iterator[Tuple[int, Dict[object, Dict[object, object]]]]:
             if isinstance(obj, int):
                 objid = obj
@@ -102,7 +108,7 @@ def search(
                 # PDFObjRef or PDFStream, but neither is valid for dict_value.
                 objid = obj.objid  # type: ignore[attr-defined]
                 tree = dict_value(obj).copy()
-            for (k, v) in parent.items():
+            for k, v in parent.items():
                 if k in cls.INHERITABLE_ATTRS and k not in tree:
                     tree[k] = v
 
@@ -126,7 +132,7 @@ def search(
         pages = False
         if "Pages" in document.catalog:
             objects = search(document.catalog["Pages"], document.catalog)
-            for (objid, tree) in objects:
+            for objid, tree in objects:
                 yield cls(document, objid, tree, next(page_labels))
                 pages = True
         if not pages:
@@ -170,7 +176,7 @@ def get_pages(
                 )
                 log.warning(warning_msg)
         # Process each page contained in the document.
-        for (pageno, page) in enumerate(cls.create_pages(doc)):
+        for pageno, page in enumerate(cls.create_pages(doc)):
             if pagenos and (pageno not in pagenos):
                 continue
             yield page
diff --git a/pdfminer/pdfparser.py b/pdfminer/pdfparser.py
index d8772918..b00c2b35 100644
--- a/pdfminer/pdfparser.py
+++ b/pdfminer/pdfparser.py
@@ -1,21 +1,16 @@
 import logging
 from io import BytesIO
-from typing import BinaryIO, TYPE_CHECKING, Optional, Union
-
-from . import settings
-from .casting import safe_int
-from .pdftypes import PDFObjRef
-from .pdfexceptions import PDFException
-from .pdftypes import PDFStream
-from .pdftypes import dict_value
-from .pdftypes import int_value
-from .psparser import KWD
-from .psexceptions import PSEOF
-from .psparser import PSKeyword
-from .psparser import PSStackParser
+from typing import TYPE_CHECKING, BinaryIO, Optional, Union
+
+from pdfminer import settings
+from pdfminer.casting import safe_int
+from pdfminer.pdfexceptions import PDFException
+from pdfminer.pdftypes import PDFObjRef, PDFStream, dict_value, int_value
+from pdfminer.psexceptions import PSEOF
+from pdfminer.psparser import KWD, PSKeyword, PSStackParser
 
 if TYPE_CHECKING:
-    from .pdfdocument import PDFDocument
+    from pdfminer.pdfdocument import PDFDocument
 
 log = logging.getLogger(__name__)
 
@@ -26,8 +21,7 @@ class PDFSyntaxError(PDFException):
 
 # PDFParser stack holds all the base types plus PDFStream, PDFObjRef, and None
 class PDFParser(PSStackParser[Union[PSKeyword, PDFStream, PDFObjRef, None]]):
-    """
-    PDFParser fetch PDF objects from a file stream.
+    """PDFParser fetch PDF objects from a file stream.
     It can handle indirect references by referring to
     a PDF document set by set_document method.
     It also reads XRefs at the end of every PDF file.
@@ -44,7 +38,7 @@ class PDFParser(PSStackParser[Union[PSKeyword, PDFStream, PDFObjRef, None]]):
 
     def __init__(self, fp: BinaryIO) -> None:
         PSStackParser.__init__(self, fp)
-        self.doc: Optional["PDFDocument"] = None
+        self.doc: Optional[PDFDocument] = None
         self.fallback = False
 
     def set_document(self, doc: "PDFDocument") -> None:
@@ -60,7 +54,6 @@ def set_document(self, doc: "PDFDocument") -> None:
 
     def do_keyword(self, pos: int, token: PSKeyword) -> None:
         """Handles PDF-related keywords."""
-
         if token in (self.KEYWORD_XREF, self.KEYWORD_STARTXREF):
             self.add_results(*self.pop(1))
 
@@ -137,8 +130,7 @@ def do_keyword(self, pos: int, token: PSKeyword) -> None:
 
 
 class PDFStreamParser(PDFParser):
-    """
-    PDFStreamParser is used to parse PDF content streams
+    """PDFStreamParser is used to parse PDF content streams
     that is contained in each page and has instructions
     for rendering the page. A reference to a PDF document is
     needed because a PDF content stream can also have
diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py
index b6eddb69..d333ec49 100644
--- a/pdfminer/pdftypes.py
+++ b/pdfminer/pdftypes.py
@@ -6,26 +6,25 @@
     Any,
     Dict,
     Iterable,
+    List,
     Optional,
     Protocol,
-    Union,
-    List,
     Tuple,
+    Union,
     cast,
 )
 from warnings import warn
 
-from . import settings, pdfexceptions
-from .ascii85 import ascii85decode
-from .ascii85 import asciihexdecode
-from .ccitt import ccittfaxdecode
-from .lzw import lzwdecode
-from .psparser import LIT, PSObject
-from .runlength import rldecode
-from .utils import apply_png_predictor
+from pdfminer import pdfexceptions, settings
+from pdfminer.ascii85 import ascii85decode, asciihexdecode
+from pdfminer.ccitt import ccittfaxdecode
+from pdfminer.lzw import lzwdecode
+from pdfminer.psparser import LIT, PSObject
+from pdfminer.runlength import rldecode
+from pdfminer.utils import apply_png_predictor
 
 if TYPE_CHECKING:
-    from .pdfdocument import PDFDocument
+    from pdfminer.pdfdocument import PDFDocument
 
 logger = logging.getLogger(__name__)
 
@@ -72,7 +71,10 @@ class PDFObject(PSObject):
 
 class PDFObjRef(PDFObject):
     def __init__(
-        self, doc: Optional["PDFDocument"], objid: int, _: Any = _DEFAULT
+        self,
+        doc: Optional["PDFDocument"],
+        objid: int,
+        _: Any = _DEFAULT,
     ) -> None:
         """Reference to a PDF object.
 
@@ -127,7 +129,7 @@ def resolve_all(x: object, default: object = None) -> Any:
     if isinstance(x, list):
         x = [resolve_all(v, default=default) for v in x]
     elif isinstance(x, dict):
-        for (k, v) in x.items():
+        for k, v in x.items():
             x[k] = resolve_all(v, default=default)
     return x
 
@@ -141,7 +143,7 @@ def decipher_all(decipher: DecipherCallable, objid: int, genno: int, x: object)
     if isinstance(x, list):
         x = [decipher_all(decipher, objid, genno, v) for v in x]
     elif isinstance(x, dict):
-        for (k, v) in x.items():
+        for k, v in x.items():
             x[k] = decipher_all(decipher, objid, genno, v)
     return x
 
@@ -309,7 +311,7 @@ def get_filters(self) -> List[Tuple[Any, Any]]:
 
     def decode(self) -> None:
         assert self.data is None and self.rawdata is not None, str(
-            (self.data, self.rawdata)
+            (self.data, self.rawdata),
         )
         data = self.rawdata
         if self.decipher:
@@ -322,7 +324,7 @@ def decode(self) -> None:
             self.data = data
             self.rawdata = None
             return
-        for (f, params) in filters:
+        for f, params in filters:
             if f in LITERALS_FLATE_DECODE:
                 # will get errors if the document is encrypted.
                 try:
@@ -353,9 +355,7 @@ def decode(self) -> None:
                 # it does not need to be decoded twice.
                 # Just return the stream to the user.
                 pass
-            elif f in LITERALS_JBIG2_DECODE:
-                pass
-            elif f in LITERALS_JPX_DECODE:
+            elif f in LITERALS_JBIG2_DECODE or f in LITERALS_JPX_DECODE:
                 pass
             elif f == LITERAL_CRYPT:
                 # not yet..
@@ -368,14 +368,18 @@ def decode(self) -> None:
                 if pred == 1:
                     # no predictor
                     pass
-                elif 10 <= pred:
+                elif pred >= 10:
                     # PNG predictor
                     colors = int_value(params.get("Colors", 1))
                     columns = int_value(params.get("Columns", 1))
                     raw_bits_per_component = params.get("BitsPerComponent", 8)
                     bitspercomponent = int_value(raw_bits_per_component)
                     data = apply_png_predictor(
-                        pred, colors, columns, bitspercomponent, data
+                        pred,
+                        colors,
+                        columns,
+                        bitspercomponent,
+                        data,
                     )
                 else:
                     error_msg = "Unsupported predictor: %r" % pred
diff --git a/pdfminer/psparser.py b/pdfminer/psparser.py
index 7af110f8..80ec1e18 100755
--- a/pdfminer/psparser.py
+++ b/pdfminer/psparser.py
@@ -1,8 +1,5 @@
 #!/usr/bin/env python3
 import io
-
-# -*- coding: utf-8 -*-
-
 import logging
 import re
 from typing import (
@@ -19,8 +16,8 @@
     Union,
 )
 
-from . import settings, psexceptions
-from .utils import choplist
+from pdfminer import psexceptions, settings
+from pdfminer.utils import choplist
 
 log = logging.getLogger(__name__)
 
@@ -36,11 +33,8 @@
 class PSObject:
     """Base class for all PS or PDF-related data types."""
 
-    pass
-
 
 class PSLiteral(PSObject):
-
     """A class that represents a PostScript literal.
 
     Postscript literals are used as identifiers, such as
@@ -63,7 +57,6 @@ def __repr__(self) -> str:
 
 
 class PSKeyword(PSObject):
-
     """A class that represents a PostScript keyword.
 
     PostScript keywords are a dozen of predefined words.
@@ -170,7 +163,6 @@ def keyword_name(x: Any) -> Any:
 
 
 class PSBaseParser:
-
     """Most basic PostScript parser that performs only tokenization."""
 
     BUFSIZ = 4096
@@ -260,7 +252,7 @@ def revreadlines(self) -> Iterator[bytes]:
         self.fp.seek(0, io.SEEK_END)
         pos = self.fp.tell()
         buf = b""
-        while 0 < pos:
+        while pos > 0:
             prevpos = pos
             pos = max(0, pos - self.BUFSIZ)
             self.fp.seek(pos)
@@ -500,7 +492,8 @@ def _parse_hexstring(self, s: bytes, i: int) -> int:
         j = m.start(0)
         self._curtoken += s[i:j]
         token = HEX_PAIR.sub(
-            lambda m: bytes((int(m.group(0), 16),)), SPC.sub(b"", self._curtoken)
+            lambda m: bytes((int(m.group(0), 16),)),
+            SPC.sub(b"", self._curtoken),
         )
         self._add_token(token)
         self._parse1 = self._parse_main
@@ -631,7 +624,10 @@ def nextobject(self) -> PSStackEntry[ExtraT]:
                         raise
             elif isinstance(token, PSKeyword):
                 log.debug(
-                    "do_keyword: pos=%r, token=%r, stack=%r", pos, token, self.curstack
+                    "do_keyword: pos=%r, token=%r, stack=%r",
+                    pos,
+                    token,
+                    self.curstack,
                 )
                 self.do_keyword(pos, token)
             else:
diff --git a/pdfminer/runlength.py b/pdfminer/runlength.py
index 72096600..2774e2ae 100644
--- a/pdfminer/runlength.py
+++ b/pdfminer/runlength.py
@@ -7,8 +7,7 @@
 
 
 def rldecode(data: bytes) -> bytes:
-    """
-    RunLength decoder (Adobe version) implementation based on PDF Reference
+    """RunLength decoder (Adobe version) implementation based on PDF Reference
     version 1.4 section 3.3.4:
         The RunLengthDecode filter decodes data that has been encoded in a
         simple byte-oriented format based on run length. The encoded data
diff --git a/pdfminer/utils.py b/pdfminer/utils.py
index 0cc5c760..a5b53852 100644
--- a/pdfminer/utils.py
+++ b/pdfminer/utils.py
@@ -1,12 +1,12 @@
-"""
-Miscellaneous Routines.
-"""
+"""Miscellaneous Routines."""
+
 import io
 import pathlib
 import string
 import struct
 from html import escape
 from typing import (
+    TYPE_CHECKING,
     Any,
     BinaryIO,
     Callable,
@@ -21,14 +21,13 @@
     Tuple,
     TypeVar,
     Union,
-    TYPE_CHECKING,
     cast,
 )
 
-from .pdfexceptions import PDFTypeError, PDFValueError
+from pdfminer.pdfexceptions import PDFTypeError, PDFValueError
 
 if TYPE_CHECKING:
-    from .layout import LTComponent
+    from pdfminer.layout import LTComponent
 
 import charset_normalizer  # For str encoding detection
 
@@ -42,8 +41,7 @@
 
 
 class open_filename:
-    """
-    Context manager that allows opening a filename
+    """Context manager that allows opening a filename
     (str or pathlib.PurePath type is supported) and closes it on exit,
     (just like `open`), but does nothing for file-like objects.
     """
@@ -69,7 +67,7 @@ def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
 
 
 def make_compat_bytes(in_str: str) -> bytes:
-    "Converts to bytes, encoding to unicode."
+    """Converts to bytes, encoding to unicode."""
     assert isinstance(in_str, str), str(type(in_str))
     return in_str.encode()
 
@@ -97,7 +95,9 @@ def shorten_str(s: str, size: int) -> str:
 
 
 def compatible_encode_method(
-    bytesorstring: Union[bytes, str], encoding: str = "utf-8", erraction: str = "ignore"
+    bytesorstring: Union[bytes, str],
+    encoding: str = "utf-8",
+    erraction: str = "ignore",
 ) -> str:
     """When Py2 str.encode is called, it often means bytes.encode in Py3.
 
@@ -128,7 +128,11 @@ def paeth_predictor(left: int, above: int, upper_left: int) -> int:
 
 
 def apply_png_predictor(
-    pred: int, colors: int, columns: int, bitspercomponent: int, data: bytes
+    pred: int,
+    colors: int,
+    columns: int,
+    bitspercomponent: int,
+    data: bytes,
 ) -> bytes:
     """Reverse the effect of the PNG predictor
 
@@ -173,7 +177,7 @@ def apply_png_predictor(
             #   Raw(x) = Up(x) + Prior(x)
             # (computed mod 256), where Prior() refers to the decoded bytes of
             # the prior scanline.
-            for (up_x, prior_x) in zip(line_encoded, line_above):
+            for up_x, prior_x in zip(line_encoded, line_above):
                 raw_x = (up_x + prior_x) & 255
                 raw.append(raw_x)
 
@@ -322,7 +326,7 @@ def get_bound(pts: Iterable[Point]) -> Rect:
     """Compute a minimal rectangle that covers all the points."""
     limit: Rect = (INF, INF, -INF, -INF)
     (x0, y0, x1, y1) = limit
-    for (x, y) in pts:
+    for x, y in pts:
         x0 = min(x0, x)
         y0 = min(y0, y)
         x1 = max(x1, x)
@@ -331,7 +335,9 @@ def get_bound(pts: Iterable[Point]) -> Rect:
 
 
 def pick(
-    seq: Iterable[_T], func: Callable[[_T], float], maxobj: Optional[_T] = None
+    seq: Iterable[_T],
+    func: Callable[[_T], float],
+    maxobj: Optional[_T] = None,
 ) -> Optional[_T]:
     """Picks the object obj where func(obj) has the highest value."""
     maxscore = None
@@ -732,7 +738,7 @@ def extend(self, objs: Iterable[LTComponentT]) -> None:
             self.add(obj)
 
     def add(self, obj: LTComponentT) -> None:
-        """place an object."""
+        """Place an object."""
         for k in self._getrange((obj.x0, obj.y0, obj.x1, obj.y1)):
             if k not in self._grid:
                 r: List[LTComponentT] = []
@@ -744,7 +750,7 @@ def add(self, obj: LTComponentT) -> None:
         self._objs.add(obj)
 
     def remove(self, obj: LTComponentT) -> None:
-        """displace an object."""
+        """Displace an object."""
         for k in self._getrange((obj.x0, obj.y0, obj.x1, obj.y1)):
             try:
                 self._grid[k].remove(obj)
@@ -753,7 +759,7 @@ def remove(self, obj: LTComponentT) -> None:
         self._objs.remove(obj)
 
     def find(self, bbox: Rect) -> Iterator[LTComponentT]:
-        """finds objects that are in a certain area."""
+        """Finds objects that are in a certain area."""
         (x0, y0, x1, y1) = bbox
         done = set()
         for k in self._getrange(bbox):
@@ -774,7 +780,6 @@ def find(self, bbox: Rect) -> Iterator[LTComponentT]:
 
 def format_int_roman(value: int) -> str:
     """Format a number as lowercase Roman numerals."""
-
     assert 0 < value < 4000
     result: List[str] = []
     index = 0
@@ -800,7 +805,6 @@ def format_int_roman(value: int) -> str:
 
 def format_int_alpha(value: int) -> str:
     """Format a number as lowercase letters a-z, aa-zz, etc."""
-
     assert value > 0
     result: List[str] = []
 
diff --git a/ruff.toml b/ruff.toml
new file mode 100644
index 00000000..45d9b864
--- /dev/null
+++ b/ruff.toml
@@ -0,0 +1,11 @@
+namespace-packages = ["pdfminer"]
+
+[lint]
+extend-select = [
+    "W",  # pycodestyle warnings
+    "I",  # isort
+    "TID"  # flake8 tidy imports
+]
+
+[lint.flake8-tidy-imports]
+ban-relative-imports = "all"
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 5926e91d..42764e2a 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
 import sys
-
 from pathlib import Path
+
 from setuptools import setup
 
 root_dir = Path(__file__).parent
diff --git a/tools/conv_cmap.py b/tools/conv_cmap.py
index 452bca52..d3c66880 100755
--- a/tools/conv_cmap.py
+++ b/tools/conv_cmap.py
@@ -18,7 +18,6 @@ def get_encs(self):
 
     def get_maps(self, enc):
         if enc.endswith("-H"):
-
             (hmapenc, vmapenc) = (enc, None)
         elif enc == "H":
             (hmapenc, vmapenc) = ("H", "V")
@@ -85,7 +84,7 @@ def pick(unimap):
             cid = int(values[0])
             unimap_h = {}
             unimap_v = {}
-            for (enc, value) in zip(encs, values):
+            for enc, value in zip(encs, values):
                 if enc == "CID":
                     continue
                 if value == "*":
@@ -149,7 +148,7 @@ def main(argv):
 
     def usage():
         print(
-            "usage: %s [-c enc=codec] output_dir regname [cid2code.txt ...]" % argv[0]
+            "usage: %s [-c enc=codec] output_dir regname [cid2code.txt ...]" % argv[0],
         )
         return 100
 
@@ -158,7 +157,7 @@ def usage():
     except getopt.GetoptError:
         return usage()
     enc2codec = {}
-    for (k, v) in opts:
+    for k, v in opts:
         if k == "-c":
             (enc, _, codec) = v.partition("=")
             enc2codec[enc] = codec
diff --git a/tools/dumppdf.py b/tools/dumppdf.py
index 23e00da5..f88389a9 100755
--- a/tools/dumppdf.py
+++ b/tools/dumppdf.py
@@ -1,29 +1,25 @@
 #!/usr/bin/env python3
 """Extract pdf structure in XML format"""
+
 import logging
 import os.path
 import re
 import sys
-from typing import Any, Container, Dict, Iterable, List, Optional, TextIO, Union, cast
 from argparse import ArgumentParser
+from typing import Any, Container, Dict, Iterable, List, Optional, TextIO, Union, cast
 
 import pdfminer
 from pdfminer.pdfdocument import PDFDocument, PDFNoOutlines, PDFXRefFallback
-from pdfminer.pdfpage import PDFPage
-from pdfminer.pdfparser import PDFParser
-from pdfminer.pdftypes import (
-    PDFStream,
-    PDFObjRef,
-    resolve1,
-    stream_value,
-)
 from pdfminer.pdfexceptions import (
+    PDFIOError,
+    PDFObjectNotFound,
     PDFTypeError,
     PDFValueError,
-    PDFObjectNotFound,
-    PDFIOError,
 )
-from pdfminer.psparser import PSKeyword, PSLiteral, LIT
+from pdfminer.pdfpage import PDFPage
+from pdfminer.pdfparser import PDFParser
+from pdfminer.pdftypes import PDFObjRef, PDFStream, resolve1, stream_value
+from pdfminer.psparser import LIT, PSKeyword, PSLiteral
 from pdfminer.utils import isnumber
 
 logging.basicConfig()
@@ -47,7 +43,7 @@ def dumpxml(out: TextIO, obj: object, codec: Optional[str] = None) -> None:
 
     if isinstance(obj, dict):
         out.write('<dict size="%d">\n' % len(obj))
-        for (k, v) in obj.items():
+        for k, v in obj.items():
             out.write("<key>%s</key>\n" % k)
             out.write("<value>")
             dumpxml(out, v)
@@ -106,7 +102,9 @@ def dumpxml(out: TextIO, obj: object, codec: Optional[str] = None) -> None:
 
 
 def dumptrailers(
-    out: TextIO, doc: PDFDocument, show_fallback_xref: bool = False
+    out: TextIO,
+    doc: PDFDocument,
+    show_fallback_xref: bool = False,
 ) -> None:
     for xref in doc.xrefs:
         if not isinstance(xref, PDFXRefFallback) or show_fallback_xref:
@@ -181,7 +179,7 @@ def resolve_dest(dest: object) -> Any:
     try:
         outlines = doc.get_outlines()
         outfp.write("<outlines>\n")
-        for (level, title, dest, a, se) in outlines:
+        for level, title, dest, a, se in outlines:
             pageno = None
             if dest:
                 dest = resolve_dest(dest)
@@ -227,7 +225,7 @@ def extract1(objid: int, obj: Dict[str, Any]) -> None:
         if fileobj.get("Type") is not LITERAL_EMBEDDEDFILE:
             raise PDFValueError(
                 "unable to process PDF: reference for %r "
-                "is not an EmbeddedFile" % (filename)
+                "is not an EmbeddedFile" % (filename),
             )
         path = os.path.join(extractdir, "%.6d-%s" % (objid, filename))
         if os.path.exists(path):
@@ -273,7 +271,7 @@ def dumppdf(
             obj = doc.getobj(objid)
             dumpxml(outfp, obj, codec=codec)
     if pagenos:
-        for (pageno, page) in enumerate(PDFPage.create_pages(doc)):
+        for pageno, page in enumerate(PDFPage.create_pages(doc)):
             if pageno in pagenos:
                 if codec:
                     for obj in page.contents:
@@ -322,11 +320,15 @@ def create_parser() -> ArgumentParser:
         help="Extract structure of outline",
     )
     procedure_parser.add_argument(
-        "--extract-embedded", "-E", type=str, help="Extract embedded files"
+        "--extract-embedded",
+        "-E",
+        type=str,
+        help="Extract embedded files",
     )
 
     parse_params = parser.add_argument_group(
-        "Parser", description="Used during PDF parsing"
+        "Parser",
+        description="Used during PDF parsing",
     )
     parse_params.add_argument(
         "--page-numbers",
@@ -372,7 +374,8 @@ def create_parser() -> ArgumentParser:
     )
 
     output_params = parser.add_argument_group(
-        "Output", description="Used during output generation."
+        "Output",
+        description="Used during output generation.",
     )
     output_params.add_argument(
         "--outfile",
diff --git a/tools/pdf2txt.py b/tools/pdf2txt.py
index 1aaee573..3341690c 100755
--- a/tools/pdf2txt.py
+++ b/tools/pdf2txt.py
@@ -1,6 +1,8 @@
 #!/usr/bin/env python3
 """A command line tool for extracting text and images from PDF and
-output it to plain text, html, xml or tags."""
+output it to plain text, html, xml or tags.
+"""
+
 import argparse
 import logging
 import sys
@@ -8,8 +10,8 @@
 
 import pdfminer.high_level
 from pdfminer.layout import LAParams
-from pdfminer.utils import AnyIO
 from pdfminer.pdfexceptions import PDFValueError
+from pdfminer.utils import AnyIO
 
 logging.basicConfig()
 
@@ -96,7 +98,8 @@ def create_parser() -> argparse.ArgumentParser:
     )
 
     parse_params = parser.add_argument_group(
-        "Parser", description="Used during PDF parsing"
+        "Parser",
+        description="Used during PDF parsing",
     )
     parse_params.add_argument(
         "--page-numbers",
@@ -138,7 +141,8 @@ def create_parser() -> argparse.ArgumentParser:
 
     la_params = LAParams()  # will be used for defaults
     la_param_group = parser.add_argument_group(
-        "Layout analysis", description="Used during layout analysis."
+        "Layout analysis",
+        description="Used during layout analysis.",
     )
     la_param_group.add_argument(
         "--no-laparams",
@@ -212,7 +216,8 @@ def create_parser() -> argparse.ArgumentParser:
     )
 
     output_params = parser.add_argument_group(
-        "Output", description="Used during output generation."
+        "Output",
+        description="Used during output generation.",
     )
     output_params.add_argument(
         "--outfile",


Test patch:
diff --git a/tests/tempfilepath.py b/tests/tempfilepath.py
index f847d734..366c26d5 100644
--- a/tests/tempfilepath.py
+++ b/tests/tempfilepath.py
@@ -1,7 +1,7 @@
 """Helper module, which provides a TemporaryFilePath() context manager"""
 
-import tempfile
 import os
+import tempfile
 
 
 class TemporaryFilePath:
@@ -12,13 +12,14 @@ class TemporaryFilePath:
     attempt to delete the file with the generated file name.
 
     Example:
-
+    -------
         >>> with TemporaryFilePath() as temp_file_name:
         >>>    with open(temp_file_name, "w") as temp_file:
         >>>        temp_file.write("some test data, which goes to the file")
         >>>        # some test code is here which reads data out of temp_file
 
     Args:
+    ----
         suffix: If 'suffix' is not None, the file name will end with that
             suffix, otherwise there will be no suffix.
         prefix: If 'prefix' is not None, the file name will begin with that
@@ -26,6 +27,7 @@ class TemporaryFilePath:
         dir: If 'dir' is not None, the file will be created in that directory,
             otherwise a default directory is used.
         delete: whether the file is deleted at the end (default True)
+
     """
 
     def __init__(self, suffix=None, prefix=None, dir=None, delete=True):
@@ -41,7 +43,9 @@ def __enter__(self) -> str:
         this method only returns the filepath of the non-existing file.
         """
         with tempfile.NamedTemporaryFile(
-            suffix=self.suffix, prefix=self.prefix, dir=self.dir
+            suffix=self.suffix,
+            prefix=self.prefix,
+            dir=self.dir,
         ) as file:
             self.temp_file_name = file.name
 
diff --git a/tests/test_converter.py b/tests/test_converter.py
index 17d280cb..afe01372 100644
--- a/tests/test_converter.py
+++ b/tests/test_converter.py
@@ -1,9 +1,9 @@
 import io
 from tempfile import TemporaryFile
 
-from pdfminer.converter import PDFLayoutAnalyzer, PDFConverter
+from pdfminer.converter import PDFConverter, PDFLayoutAnalyzer
 from pdfminer.high_level import extract_pages
-from pdfminer.layout import LTChar, LTContainer, LTRect, LTLine, LTCurve
+from pdfminer.layout import LTChar, LTContainer, LTCurve, LTLine, LTRect
 from pdfminer.pdfinterp import PDFGraphicState
 from tests.helpers import absolute_sample_path
 
@@ -48,7 +48,7 @@ def test_paint_path_multiple_mlllh(self):
         assert len(analyzer.cur_item._objs) == 3
 
     def test_paint_path_quadrilaterals(self):
-        """via https://github.com/pdfminer/pdfminer.six/issues/473"""
+        """Via https://github.com/pdfminer/pdfminer.six/issues/473"""
 
         def parse(path):
             analyzer = self._get_analyzer()
@@ -67,7 +67,7 @@ def get_types(path):
                 ("l", 90, 10),
                 ("l", 10, 10),
                 ("h",),
-            ]
+            ],
         ) == [LTRect]
 
         # Same but mllll variation
@@ -78,7 +78,7 @@ def get_types(path):
                 ("l", 90, 10),
                 ("l", 10, 10),
                 ("l", 10, 90),
-            ]
+            ],
         ) == [LTRect]
 
         # Bowtie shape
@@ -89,7 +89,7 @@ def get_types(path):
                 ("l", 190, 90),
                 ("l", 110, 10),
                 ("h",),
-            ]
+            ],
         ) == [LTCurve]
 
         # Quadrilateral with one slanted side
@@ -100,7 +100,7 @@ def get_types(path):
                 ("l", 290, 10),
                 ("l", 210, 10),
                 ("h",),
-            ]
+            ],
         ) == [LTCurve]
 
         # Path with two rect subpaths
@@ -116,7 +116,7 @@ def get_types(path):
                 ("l", 390, 10),
                 ("l", 350, 10),
                 ("h",),
-            ]
+            ],
         ) == [LTRect, LTRect]
 
         # Path with one rect subpath and one pentagon
@@ -133,7 +133,7 @@ def get_types(path):
                 ("l", 490, 10),
                 ("l", 455, 10),
                 ("h",),
-            ]
+            ],
         ) == [LTRect, LTCurve]
 
         # Three types of simple lines
@@ -151,7 +151,7 @@ def get_types(path):
                 ("m", 10, 10),
                 ("l", 30, 30),
                 ("h",),
-            ]
+            ],
         ) == [LTLine, LTLine, LTLine]
 
         # Same as above, but 'ml' variation
@@ -166,7 +166,7 @@ def get_types(path):
                 # Diagonal line
                 ("m", 10, 10),
                 ("l", 30, 30),
-            ]
+            ],
         ) == [LTLine, LTLine, LTLine]
 
         # There are six lines in this one-page PDF;
@@ -194,7 +194,7 @@ def parse(path):
             [
                 ("m", 72.41, 433.89),
                 ("c", 72.41, 434.45, 71.96, 434.89, 71.41, 434.89),
-            ]
+            ],
         )[0].pts == [
             (72.41, 433.89),
             (71.41, 434.89),
@@ -230,7 +230,7 @@ def parse(path):
             [
                 ("m", 72.41, 433.89),
                 ("c", 72.41, 434.45, 71.96, 434.89, 71.41, 434.89),
-            ]
+            ],
         )[0].original_path == [
             ("m", (72.41, 433.89)),
             ("c", (72.41, 434.45), (71.96, 434.89), (71.41, 434.89)),
@@ -252,7 +252,7 @@ def parse(path):
             [
                 ("m", 72.41, 433.89),
                 ("c", 72.41, 434.45, 71.96, 434.89, 71.41, 434.89),
-            ]
+            ],
         )[0].dashing_style == ([1, 1], 0)
 
     def test_paint_path_without_starting_m(self):
diff --git a/tests/test_encodingdb.py b/tests/test_encodingdb.py
index 11664924..2e30fbaf 100644
--- a/tests/test_encodingdb.py
+++ b/tests/test_encodingdb.py
@@ -4,40 +4,46 @@
 While not in the specification, lowercase unicode often occurs in pdf's.
 Therefore lowercase unittest variants are added.
 """
+
 import pytest
 
-from pdfminer.encodingdb import name2unicode, EncodingDB
+from pdfminer.encodingdb import EncodingDB, name2unicode
 from pdfminer.psparser import PSLiteral
 
 
 def test_name2unicode_name_in_agl():
     """The name "Lcommaaccent" has a single component,
-    which is mapped to the string U+013B by AGL"""
-    assert "\u013B" == name2unicode("Lcommaaccent")
+    which is mapped to the string U+013B by AGL
+    """
+    assert name2unicode("Lcommaaccent") == "\u013b"
 
 
 def test_name2unicode_uni():
     """The components "Lcommaaccent," "uni013B," and "u013B"
-    all map to the string U+013B"""
-    assert "\u013B" == name2unicode("uni013B")
+    all map to the string U+013B
+    """
+    assert name2unicode("uni013B") == "\u013b"
 
 
 def test_name2unicode_uni_lowercase():
     """The components "Lcommaaccent," "uni013B," and "u013B"
-    all map to the string U+013B"""
-    assert "\u013B" == name2unicode("uni013b")
+    all map to the string U+013B
+    """
+    assert name2unicode("uni013b") == "\u013b"
 
 
 def test_name2unicode_uni_with_sequence_of_digits():
     """The name "uni20AC0308" has a single component,
-    which is mapped to the string U+20AC U+0308"""
-    assert "\u20AC\u0308" == name2unicode("uni20AC0308")
+    which is mapped to the string U+20AC U+0308
+    """
+    assert name2unicode("uni20AC0308") == "\u20ac\u0308"
 
 
 def test_name2unicode_uni_with_sequence_of_digits_lowercase():
     """The name "uni20AC0308" has a single component,
-    which is mapped to the string U+20AC U+0308"""
-    assert "\u20AC\u0308" == name2unicode("uni20ac0308")
+    which is mapped to the string U+20AC U+0308
+    """
+    assert name2unicode("uni20ac0308") == "\u20ac\u0308"
 
 
 def test_name2unicode_uni_empty_string():
@@ -45,8 +51,9 @@ def test_name2unicode_uni_empty_string():
     which is mapped to a euro-sign.
 
     According to the specification this should be mapped to an empty string,
-    but we also want to support lowercase hexadecimals"""
-    assert "\u20ac" == name2unicode("uni20ac")
+    but we also want to support lowercase hexadecimals
+    """
+    assert name2unicode("uni20ac") == "\u20ac"
 
 
 def test_name2unicode_uni_empty_string_long():
@@ -71,74 +78,91 @@ def test_name2unicode_uni_empty_string_long_lowercase():
     This form cannot be used to map to the character which is
     expressed as D801 DC0C in UTF-16, specifically U+1040C.
     This character can be correctly mapped by using the
-    glyph name "u1040C."""
+    glyph name "u1040C.
+    """
     with pytest.raises(KeyError):
         name2unicode("uniD801DC0C")
 
 
 def test_name2unicode_uni_pua():
     """ "Ogoneksmall" and "uniF6FB" both map to the string that corresponds to
-    U+F6FB."""
-    assert "\uF6FB" == name2unicode("uniF6FB")
+    U+F6FB.
+    """
+    assert name2unicode("uniF6FB") == "\uf6fb"
 
 
 def test_name2unicode_uni_pua_lowercase():
     """ "Ogoneksmall" and "uniF6FB" both map to the string that corresponds to
-    U+F6FB."""
-    assert "\uF6FB" == name2unicode("unif6fb")
+    U+F6FB.
+    """
+    assert name2unicode("unif6fb") == "\uf6fb"
 
 
 def test_name2unicode_u_with_4_digits():
     """The components "Lcommaaccent," "uni013B," and "u013B" all map to the
-    string U+013B"""
-    assert "\u013B" == name2unicode("u013B")
+    string U+013B
+    """
+    assert name2unicode("u013B") == "\u013b"
 
 
 def test_name2unicode_u_with_4_digits_lowercase():
     """The components "Lcommaaccent," "uni013B," and "u013B" all map to the
-    string U+013B"""
-    assert "\u013B" == name2unicode("u013b")
+    string U+013B
+    """
+    assert name2unicode("u013b") == "\u013b"
 
 
 def test_name2unicode_u_with_5_digits():
     """The name "u1040C" has a single component, which is mapped to the string
-    U+1040C"""
-    assert "\U0001040C" == name2unicode("u1040C")
+    U+1040C
+    """
+    assert name2unicode("u1040C") == "\U0001040c"
 
 
 def test_name2unicode_u_with_5_digits_lowercase():
     """The name "u1040C" has a single component, which is mapped to the string
-    U+1040C"""
-    assert "\U0001040C" == name2unicode("u1040c")
+    U+1040C
+    """
+    assert name2unicode("u1040c") == "\U0001040c"
 
 
 def test_name2unicode_multiple_components():
     """The name "Lcommaaccent_uni20AC0308_u1040C.alternate" is mapped to the
-    string U+013B U+20AC U+0308 U+1040C"""
-    assert "\u013B\u20AC\u0308\U0001040C" == name2unicode(
-        "Lcommaaccent_uni20AC0308_u1040C.alternate"
+    string U+013B U+20AC U+0308 U+1040C
+    """
+    assert (
+        name2unicode(
+            "Lcommaaccent_uni20AC0308_u1040C.alternate",
+        )
+        == "\u013b\u20ac\u0308\U0001040c"
     )
 
 
 def test_name2unicode_multiple_components_lowercase():
     """The name "Lcommaaccent_uni20AC0308_u1040C.alternate" is mapped to the
-    string U+013B U+20AC U+0308 U+1040C"""
-    assert "\u013B\u20AC\u0308\U0001040C" == name2unicode(
-        "Lcommaaccent_uni20ac0308_u1040c.alternate"
+    string U+013B U+20AC U+0308 U+1040C
+    """
+    assert (
+        name2unicode(
+            "Lcommaaccent_uni20ac0308_u1040c.alternate",
+        )
+        == "\u013b\u20ac\u0308\U0001040c"
     )
 
 
 def test_name2unicode_foo():
     """The name 'foo' maps to an empty string,
     because 'foo' is not in AGL,
-    and because it does not start with a 'u.'"""
+    and because it does not start with a 'u.'
+    """
     with pytest.raises(KeyError):
         name2unicode("foo")
 
 
 def test_name2unicode_notdef():
     """The name ".notdef" is reduced to an empty string (step 1)
-    and mapped to an empty string (step 3)"""
+    and mapped to an empty string (step 3)
+    """
     with pytest.raises(KeyError):
         name2unicode(".notdef")
 
@@ -146,8 +170,9 @@ def test_name2unicode_notdef():
 def test_name2unicode_pua_ogoneksmall():
     """ "
     Ogoneksmall" and "uniF6FB" both map to the string
-    that corresponds to U+F6FB."""
-    assert "\uF6FB" == name2unicode("Ogoneksmall")
+    that corresponds to U+F6FB.
+    """
+    assert name2unicode("Ogoneksmall") == "\uf6fb"
 
 
 def test_name2unicode_overflow_error():
diff --git a/tests/test_highlevel_extracttext.py b/tests/test_highlevel_extracttext.py
index ad9d78c4..454b5fca 100644
--- a/tests/test_highlevel_extracttext.py
+++ b/tests/test_highlevel_extracttext.py
@@ -157,8 +157,9 @@ def test_line_margin(self):
         # Extract with line_margin 0.19 should break into 3 separate textboxes.
         pages = list(
             extract_pages(
-                self._get_test_file_path(), laparams=LAParams(line_margin=0.19)
-            )
+                self._get_test_file_path(),
+                laparams=LAParams(line_margin=0.19),
+            ),
         )
         self.assertEqual(len(pages), 1)
         page = pages[0]
@@ -172,8 +173,9 @@ def test_line_margin(self):
         # Extract with line_margin 0.21 should merge into one textbox.
         pages = list(
             extract_pages(
-                self._get_test_file_path(), laparams=LAParams(line_margin=0.21)
-            )
+                self._get_test_file_path(),
+                laparams=LAParams(line_margin=0.21),
+            ),
         )
         self.assertEqual(len(pages), 1)
         page = pages[0]
@@ -185,8 +187,9 @@ def test_line_margin(self):
     def test_no_boxes_flow(self):
         pages = list(
             extract_pages(
-                self._get_test_file_path(), laparams=LAParams(boxes_flow=None)
-            )
+                self._get_test_file_path(),
+                laparams=LAParams(boxes_flow=None),
+            ),
         )
         self.assertEqual(len(pages), 1)
         page = pages[0]
diff --git a/tests/test_layout.py b/tests/test_layout.py
index 85058cf3..1fc45f95 100644
--- a/tests/test_layout.py
+++ b/tests/test_layout.py
@@ -2,12 +2,12 @@
 
 from pdfminer.high_level import extract_pages
 from pdfminer.layout import (
-    LTLayoutContainer,
     LAParams,
-    LTTextLineHorizontal,
-    LTTextLineVertical,
+    LTLayoutContainer,
     LTTextBoxHorizontal,
     LTTextBoxVertical,
+    LTTextLineHorizontal,
+    LTTextLineVertical,
 )
 from pdfminer.utils import Plane
 from tests.helpers import absolute_sample_path
@@ -15,8 +15,7 @@
 
 class TestGroupTextLines(unittest.TestCase):
     def test_parent_with_wrong_bbox_returns_non_empty_neighbour_list(self):
-        """
-        LTLayoutContainer.group_textlines() should return all the lines in a
+        """LTLayoutContainer.group_textlines() should return all the lines in a
         separate LTTextBoxes if they do not overlap. Even when the bounding box
         of the parent container does not contain all the lines.
         """
diff --git a/tests/test_pdfdocument.py b/tests/test_pdfdocument.py
index 594e7abe..ec818eaf 100644
--- a/tests/test_pdfdocument.py
+++ b/tests/test_pdfdocument.py
@@ -3,9 +3,9 @@
 import pytest
 
 from pdfminer.pdfdocument import PDFDocument, PDFNoPageLabels
+from pdfminer.pdfexceptions import PDFObjectNotFound
 from pdfminer.pdfparser import PDFParser
 from pdfminer.pdftypes import dict_value, int_value
-from pdfminer.pdfexceptions import PDFObjectNotFound
 from tests.helpers import absolute_sample_path
 
 
diff --git a/tests/test_pdfencoding.py b/tests/test_pdfencoding.py
index ebf6592e..30715e09 100644
--- a/tests/test_pdfencoding.py
+++ b/tests/test_pdfencoding.py
@@ -2,7 +2,7 @@
 
 # -*- coding: utf-8 -*-
 
-from pdfminer.cmapdb import IdentityCMap, CMap, IdentityCMapByte
+from pdfminer.cmapdb import CMap, IdentityCMap, IdentityCMapByte
 from pdfminer.pdffont import PDFCIDFont
 from pdfminer.pdftypes import PDFStream
 from pdfminer.psparser import PSLiteral
diff --git a/tests/test_pdfminer_ccitt.py b/tests/test_pdfminer_ccitt.py
index 59cb1469..685b043f 100644
--- a/tests/test_pdfminer_ccitt.py
+++ b/tests/test_pdfminer_ccitt.py
@@ -1,4 +1,4 @@
-from pdfminer.ccitt import CCITTG4Parser, CCITTFaxDecoder
+from pdfminer.ccitt import CCITTFaxDecoder, CCITTG4Parser
 
 
 class TestCCITTG4Parser:
diff --git a/tests/test_pdfminer_crypto.py b/tests/test_pdfminer_crypto.py
index 022d5169..a56ece96 100644
--- a/tests/test_pdfminer_crypto.py
+++ b/tests/test_pdfminer_crypto.py
@@ -1,9 +1,9 @@
-"""Test of various compression/encoding modules (previously in doctests)
-"""
+"""Test of various compression/encoding modules (previously in doctests)"""
+
 import binascii
 
 from pdfminer.arcfour import Arcfour
-from pdfminer.ascii85 import asciihexdecode, ascii85decode
+from pdfminer.ascii85 import ascii85decode, asciihexdecode
 from pdfminer.lzw import lzwdecode
 from pdfminer.runlength import rldecode
 
@@ -21,7 +21,8 @@ def dehex(b):
 class TestAscii85:
     def test_ascii85decode(self):
         """The sample string is taken from:
-        http://en.wikipedia.org/w/index.php?title=Ascii85"""
+        http://en.wikipedia.org/w/index.php?title=Ascii85
+        """
         assert ascii85decode(b"9jqo^BlbD-BleB1DJ+*+F(f,q") == b"Man is distinguished"
         assert ascii85decode(b"E,9)oF*2M7/c~>") == b"pleasure."
 
diff --git a/tests/test_pdfminer_psparser.py b/tests/test_pdfminer_psparser.py
index 5ed3b409..a1599184 100644
--- a/tests/test_pdfminer_psparser.py
+++ b/tests/test_pdfminer_psparser.py
@@ -1,8 +1,8 @@
 import logging
 from io import BytesIO
 
-from pdfminer.psparser import KWD, LIT, PSBaseParser, PSStackParser
 from pdfminer.psexceptions import PSEOF
+from pdfminer.psparser import KWD, LIT, PSBaseParser, PSStackParser
 
 logger = logging.getLogger(__name__)
 
diff --git a/tests/test_pdfpage.py b/tests/test_pdfpage.py
index a99a2f47..bb12fedf 100644
--- a/tests/test_pdfpage.py
+++ b/tests/test_pdfpage.py
@@ -12,5 +12,5 @@ def test_page_labels(self):
         with open(path, "rb") as fp:
             parser = PDFParser(fp)
             doc = PDFDocument(parser)
-            for (i, page) in enumerate(PDFPage.create_pages(doc)):
+            for i, page in enumerate(PDFPage.create_pages(doc)):
                 assert page.label == expected_labels[i]
diff --git a/tests/test_tools_dumppdf.py b/tests/test_tools_dumppdf.py
index 735556e2..62e2fc39 100644
--- a/tests/test_tools_dumppdf.py
+++ b/tests/test_tools_dumppdf.py
@@ -11,9 +11,9 @@ def run(filename, options=None):
     absolute_path = absolute_sample_path(filename)
     with TemporaryFilePath() as output_file_name:
         if options:
-            s = "dumppdf -o {} {} {}".format(output_file_name, options, absolute_path)
+            s = f"dumppdf -o {output_file_name} {options} {absolute_path}"
         else:
-            s = "dumppdf -o {} {}".format(output_file_name, absolute_path)
+            s = f"dumppdf -o {output_file_name} {absolute_path}"
 
         dumppdf.main(s.split(" ")[1:])
 
diff --git a/tests/test_tools_pdf2txt.py b/tests/test_tools_pdf2txt.py
index a6e0ee1a..ff1e0cb6 100644
--- a/tests/test_tools_pdf2txt.py
+++ b/tests/test_tools_pdf2txt.py
@@ -3,9 +3,9 @@
 from shutil import rmtree
 from tempfile import mkdtemp
 
-import tools.pdf2txt as pdf2txt
 from tests.helpers import absolute_sample_path
 from tests.tempfilepath import TemporaryFilePath
+from tools import pdf2txt
 
 
 def run(sample_path, options=None):
@@ -64,7 +64,8 @@ def test_contrib_2b(self):
 
     def test_contrib_issue_350(self):
         """Regression test for
-        https://github.com/pdfminer/pdfminer.six/issues/350"""
+        https://github.com/pdfminer/pdfminer.six/issues/350
+        """
         run("contrib/issue-00352-asw-oct96-p41.pdf")
 
     def test_scancode_patchelf(self):