diff --git a/python/afdko/checkoutlinesufo.py b/python/afdko/checkoutlinesufo.py index 66648fd0c..a43c69aa7 100644 --- a/python/afdko/checkoutlinesufo.py +++ b/python/afdko/checkoutlinesufo.py @@ -6,11 +6,10 @@ from __future__ import print_function, absolute_import -__version__ = '2.2.2' +__version__ = '2.3.0' import argparse from functools import cmp_to_key -import hashlib import os import re import shutil @@ -51,7 +50,6 @@ def __init__(self, font_path): self.defcon_font = None self.use_hash_map = False self.ufo_font_hash_data = None - self.ufo_format = 2 self.save_to_default_layer = False def open(self, use_hash_map): @@ -157,6 +155,7 @@ def save(self): layer.save(glyph_set) if self.font_type == UFO_FONT_TYPE: + ufotools.regenerate_glyph_hashes(self.ufo_font_hash_data) # Write the hash data, if it has changed. self.ufo_font_hash_data.close() elif self.font_type == TYPE1_FONT_TYPE: @@ -200,23 +199,6 @@ def check_skip_glyph(self, glyph_name, do_all): self.ufo_font_hash_data.getOrSkipGlyphXML(glyph_name, do_all) return skip - @staticmethod - def build_glyph_hash(width, glyph_digest): - data_list = [str(width)] - for x, y in glyph_digest: - data_list.append("%s%s" % (x, y)) - data_list.sort() - data = "".join(data_list) - if len(data) < 128: - glyph_hash = data - else: - glyph_hash = hashlib.sha512(data).hexdigest() - return glyph_hash - - def update_hash_entry(self, glyph_name, changed): - if self.ufo_font_hash_data is not None: # isn't a UFO font. - self.ufo_font_hash_data.updateHashEntry(glyph_name, changed) - def clear_hash_map(self): if self.ufo_font_hash_data is not None: self.ufo_font_hash_data.clearHashMap() @@ -1082,7 +1064,6 @@ def run(args=None): if changed and options.allow_changes: font_changed = True original_contours = list(defcon_glyph) - font_file.update_hash_entry(glyph_name, changed) if options.write_to_default_layer: fixed_glyph = defcon_glyph fixed_glyph.clearContours() diff --git a/python/afdko/ufotools.py b/python/afdko/ufotools.py index 1e60010d9..56bf2a0ae 100644 --- a/python/afdko/ufotools.py +++ b/python/afdko/ufotools.py @@ -18,7 +18,7 @@ from afdko import convertfonttocid, fdkutils __doc__ = """ -ufotools.py v1.32.2 Dec 5 2018 +ufotools.py v1.32.3 Dec 12 2018 This module supports using the Adobe FDK tools which operate on 'bez' files with UFO fonts. It provides low level utilities to manipulate UFO @@ -601,6 +601,9 @@ def getGlyphProcessedPath(self, glyphName): return glyphPath def updateHashEntry(self, glyphName, changed): + """ + THIS METHOD DOES NOT UPDATE THE GLYPH HASHES!! + """ # srcHarsh has already been set: we are fixing the history list. if not self.useHashMap: return @@ -1168,7 +1171,6 @@ def close(self): if self.hashMapChanged: self.writeHashMap() self.hashMapChanged = 0 - return def clearHashMap(self): self.hashMap = {kAdobHashMapVersionName: kAdobHashMapVersion} @@ -2255,6 +2257,22 @@ def convertBezToGLIF(ufoFontData, glyphName, bezString, hintsOnly=False): return glifXML +def regenerate_glyph_hashes(ufo_font_data): + """ + The handling of the glyph hashes is super convoluted. + This method fixes https://github.com/adobe-type-tools/afdko/issues/349 + """ + for gname, gfilename in ufo_font_data.getGlyphMap().items(): + gwidth, _, outline_xml = ufo_font_data.getGlyphXML( + ufo_font_data.glyphDefaultDir, gfilename) + hash_entry = ufo_font_data.hashMap.get(gname, None) + if not hash_entry: + continue + ghash, _ = ufo_font_data.buildGlyphHashValue( + gwidth, outline_xml, gname, True) + hash_entry[0] = tostr(ghash) + + def checkHashMaps(fontPath, doSync): """ This function checks that all the glyphs in the processed glyph diff --git a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap index 116559ca3..de17ba5ab 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap +++ b/tests/checkoutlinesufo_data/expected_output/ufo2-dflt-layer.ufo/data/com.adobe.type.processedHashMap @@ -1,49 +1,49 @@ { 'A': ['w663l50l2350l23540l13653l193219l427219l48352l38340l3830l6530l65340l57649l363675l303675l8953l540l208265l310565l411265', ['checkOutlines']], -'B': ['ebd8defeb9a3c8c4d2a36d0ef11ddf4d748a269da0a12467389442b74109ccecdea74be34404f353ed2cb621823db003db584c2b145559b734856ac863c00662', ['checkOutlines']], +'B': ['206d63b1e295c48d65475b56780c7a16042fd2f6032636604ab21de7a6ff60b36326a3e6aa2640ab3a98f64ac8430a820350ce9fe049a73f8debbb19e4a569d2', ['checkOutlines']], 'C': ['5a6b1e8f2cdd77107378ef6258c7ef19c1813c3da70c8aa59b9ff803d96a599d55d72093738bb028a326d817f04c314369540181c069bddd79689cf0480880ad', ['checkOutlines']], -'Cacute': ['0e87147cae7a74343e856bd9282ceb4da83f787cd7f3661f5468c9f43faa5e9571d09a1351bd9ceb821ac80af14a09fed17e3a5fe9114eaf778666def08625b0', ['checkOutlines']], -'Ccaron': ['dbb3ff29c0a411640e22742740b1eb3c4ed9cee5a327bf1ea53f2fe0ace1b25bc787356abfefba4d73dfb214b309b8aeef02b072641b91eaf42db2938854d2bf', ['checkOutlines']], -'Ccedilla': ['b3b57948db74a3f763848aa43ad89c785b85fb08cfc698cc00971c49424f38a09c3c3768b3c4ebbf22f5e820199c576aedd08741c2670de5cebfc2414ceb1280', ['checkOutlines']], -'Cdotaccent': ['680c9b34589d202b236ff35f99631508e4de918e3bba8e69cb709da47dd1f95b6c3c648f7fce54c7008e0ab2b798f8c4bb3c77610393161c255c3f4ce8051637', ['checkOutlines']], -'H': ['505790245ae9b15b0f97947670ef6a7e1286abb7663eed480090aee6c2b6153e0ba14d5651db677098c5881ce7bfe1bdbf6a8737f85b3ff1591368be4f41ea3f', ['checkOutlines']], -'Hbar': ['42509cbe358b9fafff14248313fb10d78452228589f7e8e79619698980fa16a6537733572820e627ae198d9b2630cf9959c8048cbf37c812311503898cb182d9', ['checkOutlines']], +'Cacute': ['f0063ec6ceb13d061f0513643279092dff8c8f46134b28d2bc1c16fceeacff1fdaea063031d190d648db2b135b8053b67019c64be3c782bf84db0ad3c1c6f31f', ['checkOutlines']], +'Ccaron': ['0c1fd0523d3fe63ba88433189a14094b8ae3e917d8e2d1fb0d4fafd22f3574b52c39a875d2cfa8b98788449acfcbaa5e21892ecbb77f564443d984b1e82e05f1', ['checkOutlines']], +'Ccedilla': ['095bd5069749bad980611268cf303c141f78a2057059c6ea36dfcf684964b1c54310f6c10eb767b947f0e0b1bb4c6e8891b88def5e2c74b502cc54c16543a698', ['checkOutlines']], +'Cdotaccent': ['04fff4b9ee2d81743a630d601e76d7b16662a8f4ae7bac99fa19f934c0531ad35aa0b851ee449e3f38f467626dcf1b7fa0a24d22ba6c6690cbd3bc6e2f0289bd', ['checkOutlines']], +'H': ['ac9b1ab64401e8a6d0192a1ca9abb97ba05693c07c0d0892b691fe8340bbe8582dd833c1a4f45594b1d80e7570bea6d20011d7b5337a152a7a4430210d611495', ['checkOutlines']], +'Hbar': ['0b12b3c82e366d35f069fdfb4741e3aa8f88315f35ada0dbf30a5c7c2b357ec3b098c88800d3e0a16249b11a9114f442285effe2e9342b70778faab236493782', ['checkOutlines']], 'I': ['01a8b0cf6b3812265091a1b9d8f28136c749bc7f1991589c3328c2cc86a5ccc58d2a4d2110c768dbad50e0291144f338d700bb2c3bba600a934af2a11c31414b', ['checkOutlines']], -'Icircumflex': ['37be5253cd417b5ba17c637ddbfeee49cd47ae48ac024ee1b5b461d5063a924995095cf13c0d9a60440c9bb1c603d94c5c86c8771137170ff126ddecd274f5e1', ['checkOutlines']], -'L': ['d9ad8d12811beaa24feabc61e8247780a908a03c6cb2a45ef6d8949883c5588723c76dd37f051269ac131cf202a74b9c39de64921bf9bbac1b65b952b8d52c94', ['checkOutlines']], -'Lcommaaccent': ['75ee83c72defef80c8e9c1f6d1eb662130f295b73e126a9e50b8bb4191b7c1fd97794c3a2975672c1b8799e56dc8258a552d2c7b3fc972e8cd421d1bcb377fc4', ['checkOutlines']], -'Ldot': ['a312337d11380ad6a146657119e3cb7273fcada1b28c6e7d4176297cce4fe72101b0bf1b38066c178d286e38fdc27b8574c191e9ac748fb6180d0af966683231', ['checkOutlines']], -'Lslash': ['eae9e4620ea4d5e07e6e1135ed79f4f383a93adffa9f77140370d940cb2c68d0bf654c993c835377267635be179ff075fa9f46e6e8d261edb011ab015a268404', ['checkOutlines']], -'Ncommaaccent': ['0b224491a80f95f4626663c829a7dc7c808cc743beb5a205be04d592c26f5b47777522e4e725e2f5e0607ec32998ce3f2c68d68f9aab289a3b2ab685014c59d1', ['checkOutlines']], -'Ngrave': ['2dd3ef495b0a49c140238113e542e6c0850b1fa8c79d127b3d33af5db17b386b8ae2e00dd149969e0e8afbb56aa64452be5d2f2361341cc94f8d305f3c4aaef2', ['checkOutlines']], +'Icircumflex': ['f99c17fc35f75ed3c1ecc26a61e6c564686c1d32e38289f449a58a6f3b5e3e084179f54824388d0e35cb31aed3377f00147a46fe444b7e8a762fc85d2aa8ce23', ['checkOutlines']], +'L': ['93fd9bc9541b093e5a9c665eaec168f054b05077287c2cf2478e9297529f25536750ee6fe242d816c08e43d11034d660763ebcb31c701c0d369e06b76dca3ed0', ['checkOutlines']], +'Lcommaaccent': ['a45e982f95b258870ff380f8b893688d9db7af753744354fe94ebf819526822ddb7a25de493debdb0297b1f36bdc648737c6700882288469f5d2bde17b706051', ['checkOutlines']], +'Ldot': ['483c8bf1358ba6b15182537748430ea6d74bedd319f8de8f20e63516209c813d006b73366fc9676568d8340968b04ab4f06fdf82d46f9eee14184224e3c4117e', ['checkOutlines']], +'Lslash': ['d9aa5df982463984207143803b8d7a72209df0d4fee14fbbdeeb58058a0c327a7bd2a2ab31b295153d78eac5b03d84962a0a31a1826db3097d266d268bb5ff08', ['checkOutlines']], +'Ncommaaccent': ['05f70fedddf09757365b4ac7d2ba0480af1610112ae6814218db99097b4a03b0ebabf93eeb5d84e072dc1ef7b7d92c2ded32f2bf1671edbe44b2ee3aaa5f29f6', ['checkOutlines']], +'Ngrave': ['27bc9a9c715d95efe4dd4cf7efb13ac6e371f96a77f89a5af4967c2b4f62ff59ccef7dd03a67d97e5c48635f194d3a41a27d13b0061ab448fbb0c4bcbf51fdcc', ['checkOutlines']], 'O': ['d8f5a47af3280fb2738a3387ea2b1eaaf0f79703fc87ae35299e205d5ffa5ddf278575e5c81938a330ea36332fb31426d8d4deda822fc6f644a218df7cc32765', ['checkOutlines']], -'Oslash': ['c7b3bd5421a8273349ac07d7f55d3765e4e1bba44d7291a9e457839ec15104631287fed43956b90b79960a7375aec640206e387d9e09a185e3653148d737b6a2', ['checkOutlines']], -'Oslashmacron': ['a5fe6afaa7b9dc93ed7e7b3ba0a78cd25c13594c35f702e35418338eac7f80b411894e5b49a24a455671cc96ae05001af50f8720d5e8865fa7c8714b0fef462b', ['checkOutlines']], -'Otilde': ['bc400f396676e2dc870591a6e09d9f0cac8c4685ef89beca4d4dc1459f06c36ba4130d1e274fb82b5582820e65fd2374c2e3964528f327f10bbfe08df1c589f7', ['checkOutlines']], -'S': ['d31627620d35de34b06fcbde63e746d7f4ec48a951645256c71689c8f173e21bfaaaea016ab1c85366de5daaa885270199e6de3a18d2895d2cab7cae1a0c52e2', ['checkOutlines']], -'Sacute': ['a4aada46babe18e78055e5db5ed0c7ae9c3d6d6ad3424a87c9e9b27cff71378f52883d634e66852a249def0af27c91fe7d706c489c7ffc6d82f0951f4d25a42d', ['checkOutlines']], -'Scaron': ['e8c2e8795667e859cba860e0a88e887b4b9169d389be0fd5c7cc7dc5d02a5e4003e1aaf75f68b20c413c42840dbd8ad8901958261ea5d509693db22477f3db75', ['checkOutlines']], -'Scedilla': ['7286c7d2568743825faacda113538113bb9358a08bb03347a4b18f2c934890af2d65489bba2e1dc2666337f3074f4f5e3ac59eca12b9a81af95f2ff364eef48b', ['checkOutlines']], +'Oslash': ['b87e0eab82a0a6ec4caa9b9b9a51ce301c3e99e9d1d96088d6bd309f6f69b06c517fb55306f77fe06d09354306e3ea98ea562fd7b0cf3f4576c2b0f937597217', ['checkOutlines']], +'Oslashmacron': ['de9c482fb815db73d55d42cca9020d4534de3bdf69d0f7d71912ac13ea8689a9793752f27b6904a95cd6b55a6f8183f8fcc200a1f645628a0276d76399f73fe2', ['checkOutlines']], +'Otilde': ['b8b18fb19d46a3150ef52507dfc1c527dbfbdb6f07ed27b4062c2161eb7a2eace10047e3104d8a4bc5e96e4c25d3487d575ba2ef257f8c4ea874765712e81963', ['checkOutlines']], +'S': ['4340293d16ea0d95ccb5dc5733993176ef8960b54294819fe6303a6a15307aa19c126a6fef9befaed9e8f741e9094f389ae2767aa45a7ae9b5b7fa6a2137782e', ['checkOutlines']], +'Sacute': ['86ec08525cb91ea61138dc82d9defae50fbd25a0fa6d0574f91c48c5a77f9af7f4dfcd26368f15e78a280c5760f74d65273ee2949a654bf1c6cd32a49dab1882', ['checkOutlines']], +'Scaron': ['fdef6241a6814033c3f3f8e67a2c43edc34cead8ca90479790adbc17aaa967a0f036ab7cba5eeb584585f9047adc30d8f4a95e6bb512af9f43a3dffd6f900876', ['checkOutlines']], +'Scedilla': ['4ba24e8d2a4ce00b782ceca9e77e175c1ecc7f7955f629a3b6563969280b17e95be657e8195aaf7532c218b0706005274dcf8bedc491c3881482edf60947b6c7', ['checkOutlines']], 'acutecmb': ['w1000c-58576l-33557959449630c89667116692121707c121720121745103757c847576775750747c317170670-29623', ['checkOutlines']], 'acutecmb.cap': ['w1000c-66746l-48722-774335766c76789113810126826c126844126864109877c898777287755867c27839-4809-35778', ['checkOutlines']], 'c': ['cf9e46d84b17be742c229e262b4237ba5b71aa00fac915a3e2109b5ccfd44ca3a3a1fad8f71957364c189142ae656f6fc9c2555c3b75b23a6c64389d0f1260aa', ['checkOutlines']], -'cacute': ['8e5c5e3d35e273856c9f2d654d3c3071dd8fbb0e2c1d5b934e2a6a3a942d6eaadc92ebc421509698d735980b35f976fed1f05fa35e6747c45bb9dfd4c48c8c06', ['checkOutlines']], +'cacute': ['81cc973a7c9e213143cc219cac13a20ffc9140072e7c8ad9630f73c56390bf56e18ab370b2a2136a327f3e50fa5b31bc6faf630679667d269f4839be37e475a0', ['checkOutlines']], 'caroncmb': ['w1000l-114737l-138718l-37571l37571l138718l114737l0633', ['checkOutlines']], -'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l-42751l42751', ['checkOutlines']], -'ccaron': ['04ed8264bec5731948e7885926f303ca1167d42d80d3febe2988e3eae74d1bb8fd10cb24500f89cbdd7d6056b3c5bbb201e462bfe913cbda3d2514dfe660b36b', ['checkOutlines']], -'ccedilla': ['b223ab27668243870e220ac1b6ea20e4a17ff0c7cf3589e1ffe12c3276ce34ac2bf8abbd79a7b8d8ea46eca9ebb15042becbeb3de77cad00ada0bb299e89129a', ['checkOutlines']], -'cdotaccent': ['9a9124157aeefee890176e0dadea654347bb418d4e323c2156485c83cacc10eefb7949c3fa37ea4e2c1890298784643fe5a826b3ebd821721660c439850b018d', ['checkOutlines']], +'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l0782', ['checkOutlines']], +'ccaron': ['00f0360888d88d1253ce365c5085b891122c10f34d759b9d46357ec2014342438124a52e4647217d4da6d0e30483bee14bc40fc84b55b5095a5fb7d723ad3ecb', ['checkOutlines']], +'ccedilla': ['bff847e78561faa04a104f7eb3e707536751a1c706c222e03ac642f89de4d1f1cd694f34446414593d516f36198fdb97bc87aba87ee440e8b3c30c439c914689', ['checkOutlines']], +'cdotaccent': ['4691ba9f582e773d591780ba9d4becd28952f33f1ff44b61348d0b6a04afe3f599129431026a37b3c2937152bebcc26037fa582379041a149c05055114c13f8b', ['checkOutlines']], 'cedillacmb': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], -'cedillacmb.cap': ['8dce8a4b8371979f9329931d522a85be2ceab36a9d13cf4da2c51615f555e1fba625556427f10a1477f1db9bdbd421b07031bac48757ae92dce58df197c050a7', ['checkOutlines']], -'commabelowcmb': ['2e20b3cfdd80e087d29a962efa81468de9dcf447ac3dd62a51f81dee7b863d3aad49726aa4d94083bbe908f58c5ecf83d7014ca0afd8103668217fd4adda83cc', ['checkOutlines']], +'cedillacmb.cap': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], +'commabelowcmb': ['w1000c61-11761-10459-92c52-7138-5823-52c9-52-16-52-37-70c-37-96-37-121-17-144c9-155-13-189-42-206c-82-222l-72-250-2-22761-187', ['checkOutlines']], 'dotaccentcmb': ['w1000c05903759066616c666536669037716c0716-37716-66690c-66653-66616-37590', ['checkOutlines']], 'dotaccentcmb.cap': ['w1000c07383773866764c668016683837864c0864-37864-66838c-66801-66764-37738', ['checkOutlines']], 'gravecmb.cap': ['w1000l66746367775808c-27839-55867-72877c-89877-109877-126864c-126844-126826-113809c-76789-367676744c48722', ['checkOutlines']], 'hashMapVersion': (1, 0), 'macroncmb.cap': ['w1000l-150760l150760l150821l-150821', ['checkOutlines']], -'s': ['5a81574cd3fc65cf7935f048d2928f8651e5afbff723479035a2ac48cad3303b6fda9d99f9ca0d78d857d128fc4263ece2628a8456e5c012994a169af0fc7428', ['checkOutlines']], -'sacute': ['aa24df0d1ffcccbdd568400d92885d1a59be00dabc98aa157cade7272ff2c838f6b05fac22177ba7a9c6eb75ea51eda5267644cd009380ed93e677748428d219', ['checkOutlines']], -'scaron': ['808708d5fa43341f3343451393bf0acecc73615408c950d6610b16be7846ccff451baa94150d40dc3f5130b3f2402138d813286838ee766723464c0bc2f8a47c', ['checkOutlines']], -'scedilla': ['d438de651fe85d96fbb66c4cfed1086199af218f9831743480f3d70a9236cd60887306f95a1513f1bc081d2830d89236d289aee52bc8219bd662d4b77123f513', ['checkOutlines']], +'s': ['37d328a4d6d9c7aff10b31fd702ebb1bc2fb7a5e7f6adf4fb937ebdebf00b10fbf174418add48352cb8966deab70a20b4f3541e5c9bc88c84ad4266ede0dfdc2', ['checkOutlines']], +'sacute': ['fe10c10b28ff2975195a6199d8de3d11a23b97fde4c618fb752cbf86b56d55f5daa49074eeb6e387730cb5d34fce988ad9d5ef2c6cb1f0608aea4d54cd55157f', ['checkOutlines']], +'scaron': ['08f1f67b53785a4e4935ff19c4e368577be10f81c2d0a8fc03683fd11e49b0fae43c287cc66d06fb90afb33b3cc7df595226c58c5a1018e2851234ceb740bc36', ['checkOutlines']], +'scedilla': ['9ff62256b36c33cce06aedca69caaaba93c374e39d15c76d88a8c5618929bf8bf27e1aa403f4cc275e7a1407816da00f2a696b818f345b5ff674ee8cfe012152', ['checkOutlines']], 'tildecmb.cap': ['def50771048ddbe0d571261b83c52e2f10d42205b81be10d6d63cbfca22cc372632ace824ab7b636a8959ebfb2bb7dcae6292cce4a7b7008350cdc70c88ea1ff', ['checkOutlines']], } diff --git a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap index 116559ca3..de17ba5ab 100644 --- a/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap +++ b/tests/checkoutlinesufo_data/expected_output/ufo3-dflt-layer.ufo/data/com.adobe.type.processedHashMap @@ -1,49 +1,49 @@ { 'A': ['w663l50l2350l23540l13653l193219l427219l48352l38340l3830l6530l65340l57649l363675l303675l8953l540l208265l310565l411265', ['checkOutlines']], -'B': ['ebd8defeb9a3c8c4d2a36d0ef11ddf4d748a269da0a12467389442b74109ccecdea74be34404f353ed2cb621823db003db584c2b145559b734856ac863c00662', ['checkOutlines']], +'B': ['206d63b1e295c48d65475b56780c7a16042fd2f6032636604ab21de7a6ff60b36326a3e6aa2640ab3a98f64ac8430a820350ce9fe049a73f8debbb19e4a569d2', ['checkOutlines']], 'C': ['5a6b1e8f2cdd77107378ef6258c7ef19c1813c3da70c8aa59b9ff803d96a599d55d72093738bb028a326d817f04c314369540181c069bddd79689cf0480880ad', ['checkOutlines']], -'Cacute': ['0e87147cae7a74343e856bd9282ceb4da83f787cd7f3661f5468c9f43faa5e9571d09a1351bd9ceb821ac80af14a09fed17e3a5fe9114eaf778666def08625b0', ['checkOutlines']], -'Ccaron': ['dbb3ff29c0a411640e22742740b1eb3c4ed9cee5a327bf1ea53f2fe0ace1b25bc787356abfefba4d73dfb214b309b8aeef02b072641b91eaf42db2938854d2bf', ['checkOutlines']], -'Ccedilla': ['b3b57948db74a3f763848aa43ad89c785b85fb08cfc698cc00971c49424f38a09c3c3768b3c4ebbf22f5e820199c576aedd08741c2670de5cebfc2414ceb1280', ['checkOutlines']], -'Cdotaccent': ['680c9b34589d202b236ff35f99631508e4de918e3bba8e69cb709da47dd1f95b6c3c648f7fce54c7008e0ab2b798f8c4bb3c77610393161c255c3f4ce8051637', ['checkOutlines']], -'H': ['505790245ae9b15b0f97947670ef6a7e1286abb7663eed480090aee6c2b6153e0ba14d5651db677098c5881ce7bfe1bdbf6a8737f85b3ff1591368be4f41ea3f', ['checkOutlines']], -'Hbar': ['42509cbe358b9fafff14248313fb10d78452228589f7e8e79619698980fa16a6537733572820e627ae198d9b2630cf9959c8048cbf37c812311503898cb182d9', ['checkOutlines']], +'Cacute': ['f0063ec6ceb13d061f0513643279092dff8c8f46134b28d2bc1c16fceeacff1fdaea063031d190d648db2b135b8053b67019c64be3c782bf84db0ad3c1c6f31f', ['checkOutlines']], +'Ccaron': ['0c1fd0523d3fe63ba88433189a14094b8ae3e917d8e2d1fb0d4fafd22f3574b52c39a875d2cfa8b98788449acfcbaa5e21892ecbb77f564443d984b1e82e05f1', ['checkOutlines']], +'Ccedilla': ['095bd5069749bad980611268cf303c141f78a2057059c6ea36dfcf684964b1c54310f6c10eb767b947f0e0b1bb4c6e8891b88def5e2c74b502cc54c16543a698', ['checkOutlines']], +'Cdotaccent': ['04fff4b9ee2d81743a630d601e76d7b16662a8f4ae7bac99fa19f934c0531ad35aa0b851ee449e3f38f467626dcf1b7fa0a24d22ba6c6690cbd3bc6e2f0289bd', ['checkOutlines']], +'H': ['ac9b1ab64401e8a6d0192a1ca9abb97ba05693c07c0d0892b691fe8340bbe8582dd833c1a4f45594b1d80e7570bea6d20011d7b5337a152a7a4430210d611495', ['checkOutlines']], +'Hbar': ['0b12b3c82e366d35f069fdfb4741e3aa8f88315f35ada0dbf30a5c7c2b357ec3b098c88800d3e0a16249b11a9114f442285effe2e9342b70778faab236493782', ['checkOutlines']], 'I': ['01a8b0cf6b3812265091a1b9d8f28136c749bc7f1991589c3328c2cc86a5ccc58d2a4d2110c768dbad50e0291144f338d700bb2c3bba600a934af2a11c31414b', ['checkOutlines']], -'Icircumflex': ['37be5253cd417b5ba17c637ddbfeee49cd47ae48ac024ee1b5b461d5063a924995095cf13c0d9a60440c9bb1c603d94c5c86c8771137170ff126ddecd274f5e1', ['checkOutlines']], -'L': ['d9ad8d12811beaa24feabc61e8247780a908a03c6cb2a45ef6d8949883c5588723c76dd37f051269ac131cf202a74b9c39de64921bf9bbac1b65b952b8d52c94', ['checkOutlines']], -'Lcommaaccent': ['75ee83c72defef80c8e9c1f6d1eb662130f295b73e126a9e50b8bb4191b7c1fd97794c3a2975672c1b8799e56dc8258a552d2c7b3fc972e8cd421d1bcb377fc4', ['checkOutlines']], -'Ldot': ['a312337d11380ad6a146657119e3cb7273fcada1b28c6e7d4176297cce4fe72101b0bf1b38066c178d286e38fdc27b8574c191e9ac748fb6180d0af966683231', ['checkOutlines']], -'Lslash': ['eae9e4620ea4d5e07e6e1135ed79f4f383a93adffa9f77140370d940cb2c68d0bf654c993c835377267635be179ff075fa9f46e6e8d261edb011ab015a268404', ['checkOutlines']], -'Ncommaaccent': ['0b224491a80f95f4626663c829a7dc7c808cc743beb5a205be04d592c26f5b47777522e4e725e2f5e0607ec32998ce3f2c68d68f9aab289a3b2ab685014c59d1', ['checkOutlines']], -'Ngrave': ['2dd3ef495b0a49c140238113e542e6c0850b1fa8c79d127b3d33af5db17b386b8ae2e00dd149969e0e8afbb56aa64452be5d2f2361341cc94f8d305f3c4aaef2', ['checkOutlines']], +'Icircumflex': ['f99c17fc35f75ed3c1ecc26a61e6c564686c1d32e38289f449a58a6f3b5e3e084179f54824388d0e35cb31aed3377f00147a46fe444b7e8a762fc85d2aa8ce23', ['checkOutlines']], +'L': ['93fd9bc9541b093e5a9c665eaec168f054b05077287c2cf2478e9297529f25536750ee6fe242d816c08e43d11034d660763ebcb31c701c0d369e06b76dca3ed0', ['checkOutlines']], +'Lcommaaccent': ['a45e982f95b258870ff380f8b893688d9db7af753744354fe94ebf819526822ddb7a25de493debdb0297b1f36bdc648737c6700882288469f5d2bde17b706051', ['checkOutlines']], +'Ldot': ['483c8bf1358ba6b15182537748430ea6d74bedd319f8de8f20e63516209c813d006b73366fc9676568d8340968b04ab4f06fdf82d46f9eee14184224e3c4117e', ['checkOutlines']], +'Lslash': ['d9aa5df982463984207143803b8d7a72209df0d4fee14fbbdeeb58058a0c327a7bd2a2ab31b295153d78eac5b03d84962a0a31a1826db3097d266d268bb5ff08', ['checkOutlines']], +'Ncommaaccent': ['05f70fedddf09757365b4ac7d2ba0480af1610112ae6814218db99097b4a03b0ebabf93eeb5d84e072dc1ef7b7d92c2ded32f2bf1671edbe44b2ee3aaa5f29f6', ['checkOutlines']], +'Ngrave': ['27bc9a9c715d95efe4dd4cf7efb13ac6e371f96a77f89a5af4967c2b4f62ff59ccef7dd03a67d97e5c48635f194d3a41a27d13b0061ab448fbb0c4bcbf51fdcc', ['checkOutlines']], 'O': ['d8f5a47af3280fb2738a3387ea2b1eaaf0f79703fc87ae35299e205d5ffa5ddf278575e5c81938a330ea36332fb31426d8d4deda822fc6f644a218df7cc32765', ['checkOutlines']], -'Oslash': ['c7b3bd5421a8273349ac07d7f55d3765e4e1bba44d7291a9e457839ec15104631287fed43956b90b79960a7375aec640206e387d9e09a185e3653148d737b6a2', ['checkOutlines']], -'Oslashmacron': ['a5fe6afaa7b9dc93ed7e7b3ba0a78cd25c13594c35f702e35418338eac7f80b411894e5b49a24a455671cc96ae05001af50f8720d5e8865fa7c8714b0fef462b', ['checkOutlines']], -'Otilde': ['bc400f396676e2dc870591a6e09d9f0cac8c4685ef89beca4d4dc1459f06c36ba4130d1e274fb82b5582820e65fd2374c2e3964528f327f10bbfe08df1c589f7', ['checkOutlines']], -'S': ['d31627620d35de34b06fcbde63e746d7f4ec48a951645256c71689c8f173e21bfaaaea016ab1c85366de5daaa885270199e6de3a18d2895d2cab7cae1a0c52e2', ['checkOutlines']], -'Sacute': ['a4aada46babe18e78055e5db5ed0c7ae9c3d6d6ad3424a87c9e9b27cff71378f52883d634e66852a249def0af27c91fe7d706c489c7ffc6d82f0951f4d25a42d', ['checkOutlines']], -'Scaron': ['e8c2e8795667e859cba860e0a88e887b4b9169d389be0fd5c7cc7dc5d02a5e4003e1aaf75f68b20c413c42840dbd8ad8901958261ea5d509693db22477f3db75', ['checkOutlines']], -'Scedilla': ['7286c7d2568743825faacda113538113bb9358a08bb03347a4b18f2c934890af2d65489bba2e1dc2666337f3074f4f5e3ac59eca12b9a81af95f2ff364eef48b', ['checkOutlines']], +'Oslash': ['b87e0eab82a0a6ec4caa9b9b9a51ce301c3e99e9d1d96088d6bd309f6f69b06c517fb55306f77fe06d09354306e3ea98ea562fd7b0cf3f4576c2b0f937597217', ['checkOutlines']], +'Oslashmacron': ['de9c482fb815db73d55d42cca9020d4534de3bdf69d0f7d71912ac13ea8689a9793752f27b6904a95cd6b55a6f8183f8fcc200a1f645628a0276d76399f73fe2', ['checkOutlines']], +'Otilde': ['b8b18fb19d46a3150ef52507dfc1c527dbfbdb6f07ed27b4062c2161eb7a2eace10047e3104d8a4bc5e96e4c25d3487d575ba2ef257f8c4ea874765712e81963', ['checkOutlines']], +'S': ['4340293d16ea0d95ccb5dc5733993176ef8960b54294819fe6303a6a15307aa19c126a6fef9befaed9e8f741e9094f389ae2767aa45a7ae9b5b7fa6a2137782e', ['checkOutlines']], +'Sacute': ['86ec08525cb91ea61138dc82d9defae50fbd25a0fa6d0574f91c48c5a77f9af7f4dfcd26368f15e78a280c5760f74d65273ee2949a654bf1c6cd32a49dab1882', ['checkOutlines']], +'Scaron': ['fdef6241a6814033c3f3f8e67a2c43edc34cead8ca90479790adbc17aaa967a0f036ab7cba5eeb584585f9047adc30d8f4a95e6bb512af9f43a3dffd6f900876', ['checkOutlines']], +'Scedilla': ['4ba24e8d2a4ce00b782ceca9e77e175c1ecc7f7955f629a3b6563969280b17e95be657e8195aaf7532c218b0706005274dcf8bedc491c3881482edf60947b6c7', ['checkOutlines']], 'acutecmb': ['w1000c-58576l-33557959449630c89667116692121707c121720121745103757c847576775750747c317170670-29623', ['checkOutlines']], 'acutecmb.cap': ['w1000c-66746l-48722-774335766c76789113810126826c126844126864109877c898777287755867c27839-4809-35778', ['checkOutlines']], 'c': ['cf9e46d84b17be742c229e262b4237ba5b71aa00fac915a3e2109b5ccfd44ca3a3a1fad8f71957364c189142ae656f6fc9c2555c3b75b23a6c64389d0f1260aa', ['checkOutlines']], -'cacute': ['8e5c5e3d35e273856c9f2d654d3c3071dd8fbb0e2c1d5b934e2a6a3a942d6eaadc92ebc421509698d735980b35f976fed1f05fa35e6747c45bb9dfd4c48c8c06', ['checkOutlines']], +'cacute': ['81cc973a7c9e213143cc219cac13a20ffc9140072e7c8ad9630f73c56390bf56e18ab370b2a2136a327f3e50fa5b31bc6faf630679667d269f4839be37e475a0', ['checkOutlines']], 'caroncmb': ['w1000l-114737l-138718l-37571l37571l138718l114737l0633', ['checkOutlines']], -'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l-42751l42751', ['checkOutlines']], -'ccaron': ['04ed8264bec5731948e7885926f303ca1167d42d80d3febe2988e3eae74d1bb8fd10cb24500f89cbdd7d6056b3c5bbb201e462bfe913cbda3d2514dfe660b36b', ['checkOutlines']], -'ccedilla': ['b223ab27668243870e220ac1b6ea20e4a17ff0c7cf3589e1ffe12c3276ce34ac2bf8abbd79a7b8d8ea46eca9ebb15042becbeb3de77cad00ada0bb299e89129a', ['checkOutlines']], -'cdotaccent': ['9a9124157aeefee890176e0dadea654347bb418d4e323c2156485c83cacc10eefb7949c3fa37ea4e2c1890298784643fe5a826b3ebd821721660c439850b018d', ['checkOutlines']], +'caroncmb.cap': ['w1000l-114867l-137847l-37730l37730l137847l114867l0782', ['checkOutlines']], +'ccaron': ['00f0360888d88d1253ce365c5085b891122c10f34d759b9d46357ec2014342438124a52e4647217d4da6d0e30483bee14bc40fc84b55b5095a5fb7d723ad3ecb', ['checkOutlines']], +'ccedilla': ['bff847e78561faa04a104f7eb3e707536751a1c706c222e03ac642f89de4d1f1cd694f34446414593d516f36198fdb97bc87aba87ee440e8b3c30c439c914689', ['checkOutlines']], +'cdotaccent': ['4691ba9f582e773d591780ba9d4becd28952f33f1ff44b61348d0b6a04afe3f599129431026a37b3c2937152bebcc26037fa582379041a149c05055114c13f8b', ['checkOutlines']], 'cedillacmb': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], -'cedillacmb.cap': ['8dce8a4b8371979f9329931d522a85be2ceab36a9d13cf4da2c51615f555e1fba625556427f10a1477f1db9bdbd421b07031bac48757ae92dce58df197c050a7', ['checkOutlines']], -'commabelowcmb': ['2e20b3cfdd80e087d29a962efa81468de9dcf447ac3dd62a51f81dee7b863d3aad49726aa4d94083bbe908f58c5ecf83d7014ca0afd8103668217fd4adda83cc', ['checkOutlines']], +'cedillacmb.cap': ['cd50ba7c89312fbc789190975e4db86cf40641bf2de2d92ec6881bcafe013bb6898039460541aca258c82f97aed50b39594effa84f3c511c700e2405fa9fa723', ['checkOutlines']], +'commabelowcmb': ['w1000c61-11761-10459-92c52-7138-5823-52c9-52-16-52-37-70c-37-96-37-121-17-144c9-155-13-189-42-206c-82-222l-72-250-2-22761-187', ['checkOutlines']], 'dotaccentcmb': ['w1000c05903759066616c666536669037716c0716-37716-66690c-66653-66616-37590', ['checkOutlines']], 'dotaccentcmb.cap': ['w1000c07383773866764c668016683837864c0864-37864-66838c-66801-66764-37738', ['checkOutlines']], 'gravecmb.cap': ['w1000l66746367775808c-27839-55867-72877c-89877-109877-126864c-126844-126826-113809c-76789-367676744c48722', ['checkOutlines']], 'hashMapVersion': (1, 0), 'macroncmb.cap': ['w1000l-150760l150760l150821l-150821', ['checkOutlines']], -'s': ['5a81574cd3fc65cf7935f048d2928f8651e5afbff723479035a2ac48cad3303b6fda9d99f9ca0d78d857d128fc4263ece2628a8456e5c012994a169af0fc7428', ['checkOutlines']], -'sacute': ['aa24df0d1ffcccbdd568400d92885d1a59be00dabc98aa157cade7272ff2c838f6b05fac22177ba7a9c6eb75ea51eda5267644cd009380ed93e677748428d219', ['checkOutlines']], -'scaron': ['808708d5fa43341f3343451393bf0acecc73615408c950d6610b16be7846ccff451baa94150d40dc3f5130b3f2402138d813286838ee766723464c0bc2f8a47c', ['checkOutlines']], -'scedilla': ['d438de651fe85d96fbb66c4cfed1086199af218f9831743480f3d70a9236cd60887306f95a1513f1bc081d2830d89236d289aee52bc8219bd662d4b77123f513', ['checkOutlines']], +'s': ['37d328a4d6d9c7aff10b31fd702ebb1bc2fb7a5e7f6adf4fb937ebdebf00b10fbf174418add48352cb8966deab70a20b4f3541e5c9bc88c84ad4266ede0dfdc2', ['checkOutlines']], +'sacute': ['fe10c10b28ff2975195a6199d8de3d11a23b97fde4c618fb752cbf86b56d55f5daa49074eeb6e387730cb5d34fce988ad9d5ef2c6cb1f0608aea4d54cd55157f', ['checkOutlines']], +'scaron': ['08f1f67b53785a4e4935ff19c4e368577be10f81c2d0a8fc03683fd11e49b0fae43c287cc66d06fb90afb33b3cc7df595226c58c5a1018e2851234ceb740bc36', ['checkOutlines']], +'scedilla': ['9ff62256b36c33cce06aedca69caaaba93c374e39d15c76d88a8c5618929bf8bf27e1aa403f4cc275e7a1407816da00f2a696b818f345b5ff674ee8cfe012152', ['checkOutlines']], 'tildecmb.cap': ['def50771048ddbe0d571261b83c52e2f10d42205b81be10d6d63cbfca22cc372632ace824ab7b636a8959ebfb2bb7dcae6292cce4a7b7008350cdc70c88ea1ff', ['checkOutlines']], }