From 3d8f8bc4b64f75d43217840910623398da04fe9e Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Fri, 16 Oct 2026 11:59:28 +0900 Subject: [PATCH 1/2] feat(form_fit): lay out more glyphs of Hancom's own font faces at Hancom's advances MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HCI Poppy, HCI Hollyhock, 한양중고딕, 한양신명조, 한양견고딕 and 휴먼옛체 take the advances Hancom Office lays them out at for 1,678 more glyphs: Latin letters with marks, Greek, Cyrillic, punctuation and symbols. Before, those glyphs took their class's average width. A Hancom-saved fixture holds cells of twenty such glyphs in the six faces at 10 and 30 pt. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 2 + src/hwpx/form_fit/_glyph_table.py | 1311 +++++++++++++++++ .../formfit_hft_faces_std_glyph_cells.hwpx | Bin 0 -> 59522 bytes tests/test_form_fit_hancom_rules.py | 26 + 4 files changed, 1339 insertions(+) create mode 100644 tests/fixtures/hancom_saved/formfit_hft_faces_std_glyph_cells.hwpx diff --git a/CHANGELOG.md b/CHANGELOG.md index 70a51509..4dd9f85e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,8 @@ - 탭 정의에 자기 탭 위치나 자동 탭이 있는 문단은 전처럼 잰다. - 쪽 수 추정에서 강제 줄 바꿈 다음 줄은 첫 줄이 아니다. 들여쓰기를 빼지 않고 다른 줄의 폭으로 잰다. 전에는 첫 줄 폭으로 재서, 들여쓴 문단에서 줄이 하나 더 생길 수 있었다. +- FormFit과 쪽 수 추정이 HCI Poppy·HCI Hollyhock·한양중고딕·한양신명조·한양견고딕·휴먼옛체의 라틴 확장·그리스·키릴 + 문자와 기호(표준 글자 1,678자)도 한/글이 배치하는 폭으로 잰다. 전에는 표에 없어 글자 종류의 평균 폭을 썼다. - `.hwp`를 열 때 그림의 투명도와 반전을 한/글이 읽는 자리에서 읽는다. 한/글은 그림 레코드의 투명도를 그림 원래 크기 뒤 마지막 바이트에서 읽고, 바이너리 항목 번호 뒤 바이트는 읽지 않는다(저장할 때 0으로 쓴다). 전에는 그 바이트를 투명도로 옮겨, 거기에 255가 든 문서의 그림이 HWPX에서 보이지 않았다. 반전(`hp:pic@reverse`)은 그림 개체 속성의 diff --git a/src/hwpx/form_fit/_glyph_table.py b/src/hwpx/form_fit/_glyph_table.py index ea77fa8b..8f2b2fd3 100644 --- a/src/hwpx/form_fit/_glyph_table.py +++ b/src/hwpx/form_fit/_glyph_table.py @@ -4962,4 +4962,1315 @@ "_`abcdefghijklmnopqrstuvwxyz{|}~¢£¬ ̄¥₩" ), }, + "HCI Poppy": { + 1: "¡\u302a\u302b", + 161: "˙", + 172: "ː", + 218: "⁏", + 232: "⁚⁝⁞", + 256: "¦", + 263: "˛", + 270: "˚", + 272: "ĺļľł", + 276: "ìíîïĩīĭįı", + 294: "Ι", + 296: "․‧", + 300: "‚‛", + 304: "ª", + 308: "ĵ", + 321: "¹", + 328: "⁴ⁿ₁₂₃₄", + 338: "ι", + 343: "‖′‵", + 346: "ÌÍÎÏĨĪĬĮİ", + 358: "¸", + 370: "ţťŧ", + 378: "‣", + 384: "º", + 386: "´˘", + 390: "¨", + 392: "²³", + 395: "ˇ", + 400: "„‟", + 402: "ŀ", + 406: "‹›", + 409: "•", + 418: "ŕŗř", + 427: "⁎", + 432: "¼½¾", + 445: "˝", + 448: "Ĵ", + 449: "‡", + 458: "τ‼", + 466: "śŝşš", + 467: "⁃", + 474: "źżž", + 475: "⁖", + 483: "⁅⁆", + 485: "″‶", + 488: "⚬", + 491: "¶", + 492: "‽", + 494: "çðćĉċč", + 497: ( + "〿。「」、ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑→" + "↓■○" + ), + 498: "§⁑", + 502: "èéêëēĕėęě", + 506: "¯", + 512: ( + "¢»¿【】〔〕〖〗〘〙〚〛・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモ" + "ヤユヨラリルレロワン゙゚ᅠ" + ), + 514: "«", + 522: "àáâãäåāăą", + 523: "₫", + 529: "₰", + 530: "её", + 532: "£òóôõöøōŏő", + 534: "⁙", + 536: "µ", + 537: "δ", + 538: "ĸ‸", + 540: "ij", + 541: "‐‑", + 544: "⁊", + 546: "ζξ⚘", + 547: "сэ", + 549: "ν", + 550: "β", + 551: "з", + 553: "х", + 554: "у", + 555: "μ", + 556: "ďđ", + 562: "ь", + 564: "⚨⚲", + 565: "ρ", + 566: "ß", + 568: "ĝğġģε⁒", + 570: "ķ", + 571: "†", + 573: "а", + 574: "¤ùúûüĥħũūŭůűųŷ", + 578: "ñńņňʼnŋ", + 580: "ýþÿκ", + 584: "¥οо₤", + 585: "б", + 586: "гт", + 587: "γ", + 590: "ÞΡ⚚", + 593: "‗", + 601: "Β", + 604: "η", + 605: "υ", + 606: "В", + 607: "θ", + 608: "‾", + 609: "₦", + 612: "ŹŻŽк", + 613: "в", + 614: "φ", + 615: "₠₪", + 616: "З", + 621: "Р₲", + 623: "Ζря‴‷₵", + 624: "ΕЁБЕ", + 627: "Γ", + 628: "₴", + 632: "χий", + 636: "ŚŜŞŠ", + 637: "Г", + 639: "⁈", + 640: "‒", + 645: "ч", + 647: "₣", + 649: "ц⁉", + 650: "⁄", + 652: "₱", + 655: "‥", + 657: "ΚЯ⁘⁛", + 660: "ĹĻĽĿŁ", + 662: "ΤТ⁋⁌⁍", + 665: "Ь", + 666: "₭", + 668: "⁗", + 670: "₮", + 671: "н", + 672: "€", + 673: "σ", + 674: "С", + 675: "⚭", + 676: "α", + 677: "ΞЭ", + 681: "лп₥", + 682: "ψ⁁₡₢", + 688: "æК", + 694: "ÈÉÊËĒĔĖĘĚ", + 697: "⁕", + 705: "Ç", + 706: "ĆĈĊČ", + 711: "⚥⚦", + 712: "Δм", + 713: "ΘΟО", + 714: "Π", + 716: "ŔŖŘ", + 717: "Ч", + 720: "ΥΧХ", + 721: "ΑА", + 724: "λ", + 726: "Ŋъ", + 727: "д", + 731: "πω", + 733: "ΗΝН", + 736: "ИЙ", + 737: "⚐⚑", + 738: "Ω", + 740: "œ", + 752: "ПЦ", + 753: "ΛЛ", + 760: "ĜĞĠĢ", + 762: "Д", + 764: "Ψ", + 765: "ΦФ", + 766: "ÐÒÓÔÕÖØĎĐŌŎŐ", + 768: "У", + 773: "Σ", + 780: "ŶŸ", + 787: "₳", + 788: "ÙÚÛÜÝŢŤŦŨŪŬŮŰŲ‿⁀", + 792: "IJ", + 796: "ÑŃŅŇ", + 798: "Ķ", + 800: "ж", + 802: "ĤĦ", + 804: "©", + 806: "®", + 808: "Ъ", + 813: "₩", + 814: "ÀÁÂÃÄÅĀĂĄю", + 815: "⁔", + 818: "⁐", + 819: "⚢", + 822: "⁓", + 825: "ы", + 829: "₨", + 841: "ΜМ", + 842: "ŵ", + 845: "шщ", + 853: "⁇", + 864: "⚩", + 882: "◸◹◺◿", + 886: "ШЩ", + 895: "Ы⚣⚤", + 896: "―", + 920: "ф⚊⚋⚌⚍⚎⚏", + 931: "⁂", + 950: "Œ", + 951: "Ж", + 954: "⚮", + 956: "Æ", + 971: "Ю", + 979: "‱", + 980: "₧", + 993: ( + "₯℉ℓ№℡™ΩÅ⅓⅔⅛⅜⅝⅞↔↕↖↗↘↙⇒⇔∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟∠∡∢∣∤∥" + "∦∧∨∩∪∫∬∭∮∯∰∱∲∳∴∵∶∷∸∹∺∻∼∽∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡" + "≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝" + "⊞⊟⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙" + "⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⌒⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰" + "⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ─━│┃┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤" + "┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋▒▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▴▵▶▷" + "▸▹►▻▼▽▾▿◀◁◂◃◄◅◈◉◊◌◍◎◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷" + "☀☁☂☃☄☇☈☉☊☋☌☍☎☏☐☑☒☓☖☗☙☚☛☝☟☠☡☢☣☤☥☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂" + "♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽⚀" + "⚁⚂⚃⚄⚅⚆⚇⚈⚉✁✂✃✄✆✇✈✉✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟✠✡✢✣✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷" + "✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❖❘❙❚❛❜❝❞❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱❲❳❴❵❶❷❸❹❺❻" + "❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻" + "➼➽➾、。〃〄〇〜〝〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘" + "㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝" + "㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏏㏐㏓㏖㏘㏛㏜㏝!"#$%&'" + "()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc" + "defghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬ ̄¦¥₩" + ), + 1022: "¬", + 1024: "ſ⁜✀々〆〒〓〞〟", + 1036: "☜☞", + 1058: "Ŵ", + 1116: "⚯", + 1406: "◻◼◽◾☔☕☘♾♿⚒⚓⚔⚕⚖⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱", + }, + "HCI Hollyhock": { + 1: "¡\u302a\u302b", + 161: "˙", + 172: "ː", + 200: "ıľ", + 202: "ī", + 204: "į", + 206: "ĵ", + 210: "Ī", + 218: "ìíîïĺļł⁏", + 226: "ĭ", + 232: "Į⁚⁝⁞", + 238: "ÌÍÎÏ", + 242: "¦", + 244: "¹", + 246: "ĩ", + 260: "Ĭİ", + 262: "ţťŧ", + 263: "˛", + 270: "˚", + 276: "´Ĩ", + 286: "ŀ", + 294: "Ι", + 296: "․‧", + 300: "‚‛", + 318: "ŕŗř", + 328: "⁴ⁿ₁₂₃₄", + 338: "¸ι", + 343: "‖′‵", + 358: "¨", + 370: "º", + 372: "²³", + 378: "‣", + 380: "ª", + 384: "„‟", + 386: "˘", + 394: "¼½¾ij", + 395: "ˇ", + 406: "‹›", + 409: "•", + 427: "⁎", + 445: "˝", + 449: "‡", + 458: "τ‼", + 467: "⁃", + 475: "⁖", + 478: "ŷ", + 480: "ýþÿ", + 482: "ð", + 483: "⁅⁆", + 485: "″‶", + 488: "⚬", + 491: "ķ", + 492: "śŝşš‽", + 494: "¢çćĉċč", + 496: "źżž", + 497: ( + "〿。「」、ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑→" + "↓■○" + ), + 498: "»⁑", + 500: "«", + 508: "Ĵ", + 510: "ĸ", + 512: ( + "【】〔〕〖〗〘〙〚〛・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ" + "ラリルレロワン゙゚ᅠ" + ), + 522: "¯", + 523: "₫", + 528: "¿", + 529: "₰", + 530: "её", + 534: "⁙", + 536: "Þ", + 537: "δ", + 538: "‸", + 541: "‐‑", + 542: "ñĝğġģĥńņňʼnŋ", + 544: "èéêëùúûüďđēĕėęěũūŭůűų⁊", + 546: "àáâãäåāăąζξ⚘", + 547: "сэ", + 548: "ô", + 549: "ν", + 550: "õβ", + 551: "з", + 552: "òóöøōŏő", + 553: "х", + 554: "у", + 555: "μ", + 562: "ĹĻĽĿŁь", + 564: "⚨⚲", + 565: "ρ", + 568: "ε⁒", + 571: "†", + 572: "ħ", + 573: "а", + 574: "¥µ", + 577: "¶", + 580: "κ", + 584: "οо₤", + 585: "б", + 586: "гт", + 587: "γ", + 590: "Ρ⚚", + 593: "‗", + 600: "ßŢŤŦŹŻŽ", + 601: "Β", + 604: "η", + 605: "υ", + 606: "¤В", + 607: "θ", + 608: "‾", + 609: "₦", + 612: "к", + 613: "в", + 614: "φ", + 615: "₠₪", + 616: "З", + 621: "Р₲", + 623: "Ζря‴‷₵", + 624: "£ΕЁБЕ", + 627: "Γ", + 628: "₴", + 632: "χий", + 634: "ÝŊŶŸ", + 637: "Г", + 639: "⁈", + 640: "Ķ‒", + 645: "ч", + 647: "₣", + 648: "ÀÁÂÃÄÅĀĂĄ", + 649: "ц⁉", + 650: "Ş⁄", + 652: "ŚŜŠ₱", + 655: "‥", + 657: "ΚЯ⁘⁛", + 658: "§", + 662: "ΤТ⁋⁌⁍", + 664: "ÈÉÊËĒĔĖĘĚ", + 665: "Ь", + 666: "₭", + 668: "⁗", + 670: "₮", + 671: "н", + 672: "€", + 673: "σ", + 674: "С", + 675: "⚭", + 676: "α", + 677: "ΞЭ", + 681: "лп₥", + 682: "ψ⁁₡₢", + 688: "К", + 697: "⁕", + 698: "IJ", + 702: "ĎĐ", + 705: "ÙÚÛÜŨŪŬŮŲ", + 706: "ĤĦŰ", + 708: "ÑŃŅŇŔŖŘ", + 710: "Ð", + 711: "⚥⚦", + 712: "Δм", + 713: "ΘΟО", + 714: "ŵΠ", + 716: "ÇĆĈĊČ", + 717: "Ч", + 720: "ΥΧХ", + 721: "ΑА", + 724: "λ", + 726: "ъ", + 727: "д", + 731: "πω", + 733: "ΗΝН", + 736: "ИЙ", + 737: "⚐⚑", + 738: "Ω", + 752: "ПЦ", + 753: "ΛЛ", + 762: "Д", + 764: "Ψ", + 765: "ΦФ", + 766: "ÒÓÔÕÖŌŎŐ", + 768: "У", + 770: "ĜĞĠĢ", + 773: "Σ", + 782: "©®", + 787: "₳", + 788: "‿⁀", + 800: "ж", + 806: "Ø", + 808: "Ъ", + 813: "₩", + 814: "ю", + 815: "⁔", + 818: "⁐", + 819: "⚢", + 822: "⁓", + 825: "ы", + 829: "₨", + 841: "ΜМ", + 845: "шщ", + 848: "æ", + 853: "⁇", + 864: "⚩", + 882: "◸◹◺◿", + 886: "ШЩ", + 892: "œ", + 895: "Ы⚣⚤", + 896: "―", + 920: "ф⚊⚋⚌⚍⚎⚏", + 926: "Ŵ", + 931: "⁂", + 946: "Œ", + 951: "Ж", + 954: "⚮", + 958: "¬", + 971: "Ю", + 972: "Æ", + 979: "‱", + 980: "₧", + 993: ( + "₯℉ℓ№℡™ΩÅ⅓⅔⅛⅜⅝⅞↔↕↖↗↘↙⇒⇔∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟∠∡∢∣∤∥" + "∦∧∨∩∪∫∬∭∮∯∰∱∲∳∴∵∶∷∸∹∺∻∼∽∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡" + "≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝" + "⊞⊟⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙" + "⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⌒⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰" + "⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ─━│┃┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤" + "┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋▒▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▴▵▶▷" + "▸▹►▻▼▽▾▿◀◁◂◃◄◅◈◉◊◌◍◎◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷" + "☀☁☂☃☄☇☈☉☊☋☌☍☎☏☐☑☒☓☖☗☙☚☛☝☟☠☡☢☣☤☥☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂" + "♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽⚀" + "⚁⚂⚃⚄⚅⚆⚇⚈⚉✁✂✃✄✆✇✈✉✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟✠✡✢✣✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷" + "✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❖❘❙❚❛❜❝❞❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱❲❳❴❵❶❷❸❹❺❻" + "❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻" + "➼➽➾、。〃〄〇〜〝〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘" + "㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝" + "㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏏㏐㏓㏖㏘㏛㏜㏝!"#$%&'" + "()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc" + "defghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬ ̄¦¥₩" + ), + 1024: "ſ⁜✀々〆〒〓〞〟", + 1036: "☜☞", + 1116: "⚯", + 1406: "◻◼◽◾☔☕☘♾♿⚒⚓⚔⚕⚖⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱", + }, + "한양중고딕": { + 1: "\u302a\u302b", + 195: "ıľ", + 198: "ī", + 200: "į", + 201: "ĵ", + 205: "Ī", + 212: "ìíîïĺļł", + 213: "⁏", + 220: "ĭ", + 226: "Į", + 227: "⁚⁝⁞", + 233: "ÌÍÎÏ", + 237: "¦", + 239: "¹", + 240: "ĩ", + 253: "Ĭİ", + 255: "ţťŧ", + 270: "´Ĩ", + 279: "ŀ", + 292: "‚‛", + 310: "ŕŗř", + 312: "˙", + 313: "˚˛", + 330: "¸", + 350: "¨", + 361: "º", + 363: "²", + 364: "³", + 371: "ª", + 375: "ˇ˘Ι„‟", + 384: "¼½", + 385: "¾ij", + 398: "ι", + 417: "⁎", + 438: "˝ζξ", + 457: "с", + 463: "⁖", + 464: "з", + 466: "ŷ", + 468: "ÿ", + 469: "ýþ", + 470: "ð", + 477: "⚬", + 478: "ķ", + 480: "śŝşš", + 483: "¢çćĉċč", + 485: ( + "źżžε〿ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑→" + "↓○" + ), + 486: "υ⁑", + 487: "»", + 488: "«", + 497: "Ĵ", + 498: "ĸ", + 500: ( + "ао‧▮▯◤◥❙❚〖〗〘〙。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマ" + "ミムメモヤユヨラリルレロワン゙゚ᅠ" + ), + 506: "э", + 509: "¯", + 511: "₫", + 515: "¿", + 517: "₰", + 520: "⁙", + 521: "р", + 522: "ρ", + 524: "Þ", + 526: "τ", + 529: "ñĝğġģĥńņňʼnŋ", + 531: "ùúûüďđũūŭůűų⁊", + 532: "èéêëēĕėęě", + 533: "⚘", + 534: "àáâãäåāăą", + 535: "ô", + 537: "З", + 538: "õ", + 539: "óöøōŏő", + 540: "ò", + 542: "δμοσеё", + 544: "α", + 547: "ν", + 548: "я", + 549: "ĹĻĽĿŁ₤", + 551: "⚨⚲", + 555: "⁒", + 556: "г", + 559: "ħ", + 560: "¥", + 561: "µ", + 562: "¶γ", + 563: "κх", + 565: "π", + 574: "б", + 576: "⚚", + 577: "у", + 580: "ь", + 585: "ßŹŻŽ", + 586: "ŢŤŦ", + 592: "¤", + 593: "ч", + 594: "в", + 595: "₦", + 601: "₠₪", + 603: "Ξ", + 605: "к", + 606: "₲", + 608: "₵", + 609: "£Ρ", + 610: "Γ", + 612: "Р", + 613: "₴", + 616: "Ь", + 617: "т", + 619: "ÝŊŶŸ", + 623: "η", + 624: "⁈", + 625: "ĶΖλωГ₣", + 626: "χ", + 632: "ÀÁÂÃÄÅĀĂĄ", + 634: "⁉", + 635: "Ş", + 636: "ŚŜŠ", + 637: "₱", + 640: "и", + 641: "⁘⁛", + 643: "§", + 645: "н", + 646: "⁋⁌⁍", + 649: "ÈÉÊËĒĔĖĘĚ", + 650: "Ч₭", + 652: "⁗", + 654: "Ββ₮", + 658: "Δ₧", + 659: "⚭", + 661: "φ", + 662: "п", + 665: "₥", + 666: "₡₢", + 667: "ΕΥЁБВЕСЭЯ", + 670: "д", + 680: "⁕", + 681: "IJ", + 684: "ΧХ", + 686: "ĎĐц", + 688: "ÙÚÛÜŨŪŬŮŲъ", + 689: "ĤĦ", + 690: "Űψф", + 692: "ÑŃŅŇŔŖŘУ", + 693: "Ð", + 694: "⚥⚦", + 697: "ŵ", + 699: "ÇĆĈĊČ", + 700: "Πл", + 708: "ΘΟθО", + 711: "Т", + 716: "Τ", + 717: "Ω", + 720: "⚐⚑", + 736: "ΦЛФ", + 741: "Ψ", + 749: "ÒÓÔÕÖŌŎŐ", + 750: "ΑΗΚΛΝАИЙН►◄", + 751: "ĜĞĠĢ", + 762: "ж", + 764: "©®", + 769: "₳", + 770: "м", + 774: "♦", + 780: "П", + 781: "Σ", + 787: "Ø", + 794: "Д", + 795: "Ъ", + 796: "⁔", + 798: "ю", + 799: "⁐⚢", + 801: "Ц", + 802: "⁓", + 810: "₨", + 813: "К", + 829: "æ", + 833: "⁇", + 844: "⚩", + 861: "◸◹◺◿", + 872: "œ", + 874: "⚣⚤", + 875: "шы", + 890: "щ", + 898: "⚊⚋⚌⚍⚎⚏", + 900: "Ы", + 904: "Ŵ", + 912: "ΜМ", + 924: "Œ", + 932: "⚮", + 936: "¬", + 950: "Æ", + 970: ( + "₯∊∍≛⋍⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿▢▭▰▻◅◌◍◖◗◚◛◠◡◢◣◧◨◩◪◫◬◭◮◰◱◲◳◴◵◶◷☀☉☊☋☌☍☐☓☖☗" + "☙☚☛☠☡☣☤☥☦☧☩☪☫☬☭☸☹☾☿♁♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♢♰♱♲♳♴♵♶♷♸♹" + "♺♻♼♽⚀⚁⚂⚃⚄⚅⚆⚇⚈⚉✁✃✄✆✇✈✌✍✎✏✐✑✒✓✕✖✘✙✚✛✜✞✟✠✢✣✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸" + "✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❖❘❛❜❝❞❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱❲❳❴❵❿➀➁➂➃➄➅➆➇" + "➈➉➊➋➌➍➎➏➐➑➒➓➔➘➙➚➛➝➞➟➠➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻➼➽➾〝〠〡〢〣〤〥〦〧〨〩" + "〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾⦅⦆¦" + ), + 1000: ( + "¡ſːЖШЩЮй‐‑‒―‖‗†‡•‣․‥‱′″‴‵‶‷‸‹›‼‽‾‿⁀⁁⁂⁃⁄⁅⁆⁜⁴ⁿ₁₂₃₄₩€℉ℓ№℡™ΩÅ⅓⅔⅛" + "⅜⅝⅞↔↕↖↗↘↙⇒⇔∀∁∂∃∄∅∆∇∈∉∋∌∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟∠∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲" + "∳∴∵∶∷∸∹∺∻∼∽∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≜≝≞≟≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯" + "≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫" + "⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨" + "⋩⋪⋫⋬⋭⋮⋯⋰⋱⌒⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧ" + "ⓨⓩ─━│┃┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁" + "╂╃╄╅╆╇╈╉╊╋▒▣▤▥▦▧▨▩▪▫▬▱▴▵▶▷▸▹▼▽▾▿◀◁◂◃◈◉◊◎◐◑◒◓◔◕◘◙◜◝◞◟◦◯☁☂☃☄☇☈" + "☎☏☑☒☜☝☞☟☢☨☮☯☰☱☲☳☴☵☶☷☺☻☼☽♀♂♠♡♣♤♥♧♨♩♪♫♬♭♮♯✀✂✉✔✗✝✡❶❷❸❹❺❻❼❽❾➜➡、。" + "〃〄々〆〇【】〒〓〔〕〚〛〜〞〟㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮" + "㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰" + "㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏏㏐㏓㏖㏘㏛㏜㏝!"#$%&'()*+,-./0123456789:" + ";<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv" + "wxyz{|}~¢£¬ ̄¥₩■" + ), + 1089: "⚯", + 1373: "◻◼◽◾☔☕☘♾♿⚒⚓⚔⚕⚖⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱", + }, + "한양신명조": { + 1: "\u302a\u302b", + 213: "⁏", + 227: "⁚⁝⁞", + 250: "¦", + 265: "ĺļľł", + 269: "ìíîïĩīĭįı", + 292: "‚‛", + 297: "ª", + 301: "ĵ", + 312: "˙", + 313: "¹˚˛", + 337: "ÌÍÎÏĨĪĬĮİ", + 350: "¸", + 361: "ţťŧ", + 375: "ºˇ˘Ι", + 376: "´", + 380: "¨", + 383: "²³", + 390: "„‟", + 393: "ŀ", + 398: "ι", + 409: "ŕŗř", + 417: "⁎", + 421: "¼½¾", + 438: "Ĵ˝ζξ", + 455: "śŝşš", + 457: "с", + 463: "źżž⁖", + 464: "з", + 477: "⚬", + 479: "¶", + 482: "çðćĉċč", + 485: "ε〿ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑→↓○", + 486: "§υ⁑", + 490: "èéêëēĕėęě", + 494: "¯", + 500: ( + "¢»¿ао‧▮▯◤◥❙❚〖〗〘〙。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフ" + "ヘホマミムメモヤユヨラリルレロワン゙゚ᅠ" + ), + 501: "«", + 506: "э", + 509: "àáâãäåāăą", + 511: "₫", + 517: "₰", + 519: "òóôõöøōŏő", + 520: "£⁙", + 521: "р", + 522: "ρ", + 523: "µ", + 525: "ĸ", + 526: "τ", + 528: "ij", + 531: "⁊", + 533: "⚘", + 537: "З", + 542: "δμοσеё", + 543: "ďđ", + 544: "α", + 547: "ν", + 548: "я", + 549: "₤", + 551: "⚨⚲", + 553: "ß", + 554: "ĝğġģ", + 555: "⁒", + 556: "г", + 557: "ķ", + 560: "ùúûüĥħũūŭůűų", + 561: "¤ŷ", + 562: "γ", + 563: "κх", + 564: "ñńņňʼnŋ", + 565: "π", + 566: "ýþÿ", + 571: "¥", + 574: "б", + 576: "Þ⚚", + 577: "у", + 580: "ь", + 593: "ч", + 594: "в", + 595: "₦", + 597: "ŹŻŽ", + 601: "₠₪", + 603: "Ξ", + 605: "к", + 606: "₲", + 608: "₵", + 609: "Ρ", + 610: "Γ", + 612: "Р", + 613: "₴", + 616: "Ь", + 617: "т", + 622: "ŚŜŞŠ", + 623: "η", + 624: "⁈", + 625: "ΖλωГ₣", + 626: "χ", + 634: "⁉", + 637: "₱", + 640: "и", + 641: "⁘⁛", + 645: "ĹĻĽĿŁн", + 646: "⁋⁌⁍", + 650: "Ч₭", + 652: "⁗", + 654: "Ββ₮", + 658: "Δ₧", + 659: "⚭", + 661: "φ", + 662: "п", + 665: "₥", + 666: "₡₢", + 667: "ΕΥЁБВЕСЭЯ", + 670: "д", + 672: "æ", + 677: "ÈÉÊËĒĔĖĘĚ", + 680: "⁕", + 684: "ΧХ", + 686: "ц", + 687: "Ç", + 688: "ъ", + 690: "ĆĈĊČψф", + 692: "У", + 694: "⚥⚦", + 700: "ŔŖŘΠл", + 708: "ΘΟθО", + 709: "Ŋ", + 711: "Т", + 716: "Τ", + 717: "Ω", + 720: "⚐⚑", + 723: "œ", + 736: "ΦЛФ", + 741: "Ψ", + 742: "ĜĞĠĢ", + 748: "ÒÓÔÕÖØŌŎŐ", + 749: "ÐĎĐ", + 750: "ΑΗΚΛΝАИЙН►◄", + 762: "ŶŸж", + 769: "₳", + 770: "ÙÚÛÜÝŢŤŦŨŪŬŮŰŲм", + 774: "IJ♦", + 777: "ÑŃŅŇ", + 780: "ĶП", + 781: "Σ", + 784: "ĤĦ", + 785: "©", + 788: "®", + 794: "ÀÁÂÃÄÅĀĂĄД", + 795: "Ъ", + 796: "⁔", + 798: "ю", + 799: "⁐⚢", + 801: "Ц", + 802: "⁓", + 810: "₨", + 813: "К", + 823: "ŵ", + 833: "⁇", + 844: "⚩", + 861: "◸◹◺◿", + 874: "⚣⚤", + 875: "шы", + 890: "щ", + 898: "⚊⚋⚌⚍⚎⚏", + 900: "Ы", + 912: "ΜМ", + 927: "Œ", + 932: "⚮", + 934: "Æ", + 970: ( + "₯∊∍≛⋍⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿▢▭▰▻◅◌◍◖◗◚◛◠◡◢◣◧◨◩◪◫◬◭◮◰◱◲◳◴◵◶◷☀☉☊☋☌☍☐☓☖☗" + "☙☚☛☠☡☣☤☥☦☧☩☪☫☬☭☸☹☾☿♁♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♢♰♱♲♳♴♵♶♷♸♹" + "♺♻♼♽⚀⚁⚂⚃⚄⚅⚆⚇⚈⚉✁✃✄✆✇✈✌✍✎✏✐✑✒✓✕✖✘✙✚✛✜✞✟✠✢✣✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸" + "✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❖❘❛❜❝❞❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱❲❳❴❵❿➀➁➂➃➄➅➆➇" + "➈➉➊➋➌➍➎➏➐➑➒➓➔➘➙➚➛➝➞➟➠➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻➼➽➾〝〠〡〢〣〤〥〦〧〨〩" + "〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾⦅⦆¦" + ), + 999: "¬", + 1000: ( + "¡ſːЖШЩЮй‐‑‒―‖‗†‡•‣․‥‱′″‴‵‶‷‸‹›‼‽‾‿⁀⁁⁂⁃⁄⁅⁆⁜⁴ⁿ₁₂₃₄₩€℉ℓ№℡™ΩÅ⅓⅔⅛" + "⅜⅝⅞↔↕↖↗↘↙⇒⇔∀∁∂∃∄∅∆∇∈∉∋∌∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟∠∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲" + "∳∴∵∶∷∸∹∺∻∼∽∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≜≝≞≟≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯" + "≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫" + "⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨" + "⋩⋪⋫⋬⋭⋮⋯⋰⋱⌒⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧ" + "ⓨⓩ─━│┃┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁" + "╂╃╄╅╆╇╈╉╊╋▒▣▤▥▦▧▨▩▪▫▬▱▴▵▶▷▸▹▼▽▾▿◀◁◂◃◈◉◊◎◐◑◒◓◔◕◘◙◜◝◞◟◦◯☁☂☃☄☇☈" + "☎☏☑☒☜☝☞☟☢☨☮☯☰☱☲☳☴☵☶☷☺☻☼☽♀♂♠♡♣♤♥♧♨♩♪♫♬♭♮♯✀✂✉✔✗✝✡❶❷❸❹❺❻❼❽❾➜➡、。" + "〃〄々〆〇【】〒〓〔〕〚〛〜〞〟㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮" + "㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰" + "㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏏㏐㏓㏖㏘㏛㏜㏝!"#$%&'()*+,-./0123456789:" + ";<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv" + "wxyz{|}~¢£¬ ̄¥₩■" + ), + 1034: "Ŵ", + 1089: "⚯", + 1373: "◻◼◽◾☔☕☘♾♿⚒⚓⚔⚕⚖⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱", + }, + "한양견고딕": { + 3: "\u302a\u302b", + 644: "˙", + 689: "ː", + 799: "ıľ", + 813: "ī", + 820: "į", + 824: "ĵ", + 840: "Ī", + 869: "ìíîïĺļł", + 873: "⁏", + 902: "ĭ", + 925: "Į", + 930: "⁚⁝⁞", + 955: "ÌÍÎÏ", + 971: "¦", + 979: "¹", + 983: "ĩ", + 1037: "Ĭİ", + 1045: "ţťŧ", + 1053: "˛", + 1082: "˚", + 1107: "´Ĩ", + 1143: "ŀ", + 1176: "Ι", + 1184: "․‧", + 1196: "‚‛", + 1271: "ŕŗř", + 1311: "⁴ⁿ₁₂₃₄", + 1353: "¸ι", + 1373: "‖′‵", + 1435: "¨", + 1479: "º", + 1487: "²", + 1491: "³", + 1512: "‣", + 1520: "ª", + 1536: "„‟", + 1545: "˘", + 1573: "¼½", + 1577: "¾ij", + 1581: "ˇ", + 1622: "‹›", + 1635: "•", + 1708: "⁎", + 1782: "˝", + 1796: "‡", + 1831: "τ‼", + 1868: "⁃", + 1901: "⁖", + 1908: "ŷ", + 1917: "ÿ", + 1921: "ýþ", + 1927: "ð", + 1934: "⁅⁆", + 1941: "″‶", + 1954: "⚬", + 1959: "ķ", + 1967: "śŝşš‽", + 1979: "¢çćĉċč", + 1987: ( + "źżž〿。「」、ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│" + "←↑→↓■○" + ), + 1992: "⁑", + 1995: "»", + 1999: "«", + 2036: "Ĵ", + 2041: "ĸ", + 2048: ( + "【】〔〕〖〗〘〙〚〛・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨ" + "ラリルレロワン゙゚ᅠ" + ), + 2053: "¡", + 2085: "¯", + 2094: "₫", + 2110: "¿", + 2118: "₰", + 2121: "её", + 2134: "⁙", + 2147: "Þδ", + 2151: "‸", + 2163: "‐‑", + 2167: "ñĝğġģĥńņňʼnŋ", + 2175: "ùúûüďđũūŭůűų⁊", + 2180: "èéêëēĕėęě", + 2184: "ζξ⚘", + 2189: "àáâãäåāăąсэ", + 2192: "ô", + 2196: "ν", + 2200: "β", + 2205: "õз", + 2208: "óöøōŏő", + 2212: "òх", + 2216: "у", + 2219: "μ", + 2249: "ĹĻĽĿŁь", + 2257: "⚨⚲", + 2261: "ρ", + 2274: "ε⁒", + 2285: "†", + 2290: "ħ", + 2294: "¥а", + 2298: "µ", + 2301: "¶", + 2320: "κ", + 2336: "οо₤", + 2339: "б", + 2343: "гт", + 2347: "γ", + 2360: "Ρ⚚", + 2372: "‗", + 2397: "ßŹŻŽ", + 2400: "ŢŤŦ", + 2405: "Β", + 2416: "η", + 2421: "υ", + 2425: "¤В", + 2429: "θ", + 2432: "‾", + 2438: "₦", + 2449: "к", + 2454: "в", + 2458: "φ", + 2462: "₠₪", + 2465: "З", + 2484: "Р₲", + 2491: "Ζря‴‷₵", + 2495: "£ΕЁБЕ", + 2507: "Γ", + 2511: "₴", + 2528: "χий", + 2536: "ÝŊŶŸ", + 2549: "Г", + 2556: "⁈", + 2560: "Ķ‒", + 2580: "ч", + 2589: "ÀÁÂÃÄÅĀĂĄ₣", + 2596: "ц⁉", + 2601: "Ş⁄", + 2606: "ŚŜŠ", + 2610: "₱", + 2622: "‥", + 2629: "ΚЯ⁘⁛", + 2634: "§", + 2648: "ΤТ⁋⁌⁍", + 2659: "ÈÉÊËĒĔĖĘĚЬ", + 2664: "₭", + 2671: "⁗", + 2680: "₮", + 2683: "н", + 2687: "€", + 2692: "σ", + 2697: "С", + 2700: "⚭", + 2704: "α", + 2708: "ΞЭ", + 2724: "лп₥", + 2729: "ψ⁁₡₢", + 2753: "К", + 2790: "IJ⁕", + 2809: "ĎĐ", + 2818: "ÙÚÛÜŨŪŬŮŲ", + 2823: "ĤĦ", + 2828: "Ű", + 2835: "ÑŃŅŇŔŖŘ", + 2839: "Ð", + 2844: "⚥⚦", + 2847: "Δм", + 2851: "ΘΟО", + 2855: "ŵΠ", + 2864: "ÇĆĈĊČ", + 2868: "Ч", + 2880: "ΥΧХ", + 2884: "ΑА", + 2896: "λ", + 2905: "ъ", + 2908: "д", + 2924: "πω", + 2933: "ΗΝН", + 2945: "ИЙ", + 2950: "⚐⚑", + 2954: "Ω", + 3008: "ПЦ", + 3011: "ΛЛ", + 3048: "Д", + 3057: "Ψ", + 3060: "ΦФ", + 3068: "ÒÓÔÕÖŌŎŐ", + 3073: "У", + 3077: "ĜĞĠĢ", + 3093: "Σ", + 3130: "©®", + 3150: "₳", + 3153: "‿⁀", + 3199: "ж", + 3224: "Ø", + 3232: "Ъ", + 3252: "₩", + 3257: "ю", + 3261: "⁔", + 3273: "⁐", + 3277: "⚢", + 3290: "⁓", + 3301: "ы", + 3317: "₨", + 3363: "ΜМ", + 3380: "шщ", + 3396: "æ", + 3412: "⁇", + 3457: "⚩", + 3527: "◸◹◺◿", + 3543: "ШЩ", + 3572: "œ", + 3581: "Ы⚣⚤", + 3584: "―", + 3680: "ф⚊⚋⚌⚍⚎⚏", + 3703: "Ŵ", + 3724: "⁂", + 3785: "Œ", + 3806: "Ж", + 3818: "⚮", + 3834: "¬", + 3883: "Ю", + 3893: "Æ", + 3916: "‱", + 3920: "₧", + 3973: ( + "₯℉ℓ№℡™ΩÅ⅓⅔⅛⅜⅝⅞↔↕↖↗↘↙⇒⇔∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟∠∡∢∣∤∥" + "∦∧∨∩∪∫∬∭∮∯∰∱∲∳∴∵∶∷∸∹∺∻∼∽∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟≠≡" + "≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝" + "⊞⊟⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙" + "⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⌒⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰" + "⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ─━│┃┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤" + "┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋▒▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▴▵▶▷" + "▸▹►▻▼▽▾▿◀◁◂◃◄◅◈◉◊◌◍◎◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷" + "☀☁☂☃☄☇☈☉☊☋☌☍☎☏☐☑☒☓☖☗☙☚☛☝☟☠☡☢☣☤☥☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♀♁♂" + "♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♠♡♢♣♤♥♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽⚀" + "⚁⚂⚃⚄⚅⚆⚇⚈⚉✁✂✃✄✆✇✈✉✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟✠✡✢✣✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷" + "✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❖❘❙❚❛❜❝❞❡❢❣❤❥❦❧❨❩❪❫❬❭❮❯❰❱❲❳❴❵❶❷❸❹❺❻" + "❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻" + "➼➽➾、。〃〄〇〜〝〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘" + "㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝" + "㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊㏏㏐㏓㏖㏘㏛㏜㏝!"#$%&'" + "()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc" + "defghijklmnopqrstuvwxyz{|}~⦅⦆¢£¬ ̄¦¥₩" + ), + 4096: "ſ⁜✀々〆〒〓〞〟", + 4146: "☜☞", + 4464: "⚯", + 5624: "◻◼◽◾☔☕☘♾♿⚒⚓⚔⚕⚖⚗⚙⚛⚜⚠⚡⚧⚪⚫⚰⚱", + }, + "휴먼옛체": { + 1: "\u302a\u302b", + 228: "ι", + 256: "¦", + 276: "‚‛", + 284: "Ι", + 296: "․‧⁚", + 298: "ìíîïįĵĺļ⁏⁝⁞", + 344: "‖‵", + 360: "ĩīĭ", + 374: "г", + 378: "‣", + 380: "„‟", + 384: "¯ÌÍÎÏĨĪĬĮİţſ", + 394: "ľ", + 404: "τ", + 406: "‹›", + 408: "•", + 426: "ŕŗř", + 448: "к", + 452: "ζ", + 456: "ε", + 458: "ξ‼", + 466: "⁃", + 470: "Ĵзт", + 482: "źżž", + 484: "⁅⁆", + 486: "‶", + 492: "‽", + 496: ( + "ť〿。「」、ᄀᄁᆪᄂᆬᆭᄃᄄᄅᆰᆱᆲᆳᆴᆵᄚᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵ│←↑" + "→↓■○" + ), + 498: "⁎⁑", + 512: ( + "¢£«»àáâãäåāăąćĉċčśŝşšγκλνсух〖〗〘〙〚〛・ヲァィゥェォャュョッーアイウエオカキクケコサシスセ" + "ソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚ᅠ" + ), + 522: "э", + 524: "₫", + 530: "₰", + 532: "ç", + 534: "чь", + 538: "χ‸", + 540: "‐‑", + 544: "в⁊", + 550: "⁖", + 554: "µèéêëñòóôõöùúûüēĕėęěĝğġģĥķńņňōŏőũūŭůűųГпя", + 560: "υ", + 564: "Γ", + 566: "н", + 568: "⁒", + 570: "δηθοаеорё", + 572: "ий⁕", + 582: "ρ", + 584: "₤", + 586: "бц⁗", + 590: "βμ", + 592: "α‗", + 596: "К", + 598: "ýÿŷдл", + 608: "‾", + 610: "₦", + 616: "₠₪", + 619: "З⁙", + 620: "₲", + 622: "‴‷₵", + 626: "ΖΤТ", + 628: "₴", + 632: "σ", + 634: "Σ", + 638: "⁈⁘", + 640: "ĹĻĽŚŜŞŠŹŻŽъ‒", + 648: "₣", + 650: "У⁄⁉", + 652: "₱", + 662: "⁋⁌⁍", + 664: "φ", + 666: "Ξ₭", + 670: "₮", + 672: "БЛЬ€", + 680: "₥", + 682: "¥ÈÉÊËÝĆĈĊČĒĔĖĘĚŔŖŘŶŸЧ⁁₡₢", + 684: "ΑΒΔΕΚΛΡΥΧЁАВЕРХ", + 686: "ж", + 690: "Ç", + 694: "ďД", + 700: "⁛", + 705: "м⁓", + 706: "π", + 726: "ÒÓÔÕÖĎĐĜĞĠĢŌŎŐ", + 730: "ψ", + 736: "ИЙПЭы", + 740: "ΗΝΠНСЯ", + 758: "Ц", + 766: "Ω", + 768: "ÀÁÂÃÄÅÑÙÚÛÜĀĂĄĤĶŃŅŇŢŤŨŪŬŮŰŲю", + 778: "Ф", + 788: "‿⁀⁔⁜₳", + 796: "ΘΟО", + 800: "ω", + 802: "©®", + 804: "¬", + 810: "ŵЪ", + 814: "₩", + 818: "Φ⁐", + 822: "ш", + 830: "₨", + 842: "фщ", + 854: "ΜМ", + 856: "Ψ", + 900: "⁇", + 906: "Ы", + 930: "⁂", + 938: "Ш", + 946: "Ж", + 960: "Щ", + 978: "‱", + 980: "₧", + 982: "Ŵ", + 994: ( + "₯∁∄∅∆∉∊∌∍∎∐−∓∔∕∖∗∘∙∛∜∟∡∢∣∤∦∭∯∰∱∲∳∶∷∸∹∺∻∾∿≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≓" + "≔≕≖≗≘≙≚≛≜≝≞≟≢≣≦≧≨≩≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊄⊅⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊚" + "⊛⊜⊝⊞⊟⊠⊡⊢⊣⊤⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗" + "⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿▢▪▫▬▭▮▯▰▱▴▵▸▹►▻▾▿◂◃◄" + "◅◉◊◌◍◒◓◔◕◖◗◘◙◚◛◜◝◞◟◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿☀☁☂☃☄☇☈☉☊" + "☋☌☍☐☑☒☓☔☕☖☗☘☙☚☛☝☟☠☡☢☣☤☥☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹☺☻☼☽☾☿♁♃♄♅♆♇♈♉♊♋♌" + "♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟♢♦♫♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽♾♿⚀⚁⚂⚃⚄⚅⚆⚇⚈⚉⚊⚋⚌⚍⚎⚏⚐⚑⚒⚓" + "⚔⚕⚖⚗⚘⚙⚚⚛⚜⚠⚡⚢⚣⚤⚥⚦⚧⚨⚩⚪⚫⚬⚭⚮⚯⚰⚱⚲✁✂✃✄✆✇✈✉✌✍✎✏✐✑✒✓✔✕✖✗✘✙✚✛✜✝✞✟✠✡✢✣" + "✤✥✦✧✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾✿❀❁❂❃❄❅❆❇❈❉❊❋❍❏❐❑❒❖❘❙❚❛❜❝❞❡❢❣❤❥❦❧❨" + "❩❪❫❬❭❮❯❰❱❲❳❴❵❶❷❸❹❺❻❼❽❾❿➀➁➂➃➄➅➆➇➈➉➊➋➌➍➎➏➐➑➒➓➔➘➙➚➛➜➝➞➟➠➡➢➣➤➥➦➧" + "➨➩➪➫➬➭➮➯➱➲➳➴➵➶➷➸➹➺➻➼➽➾〄〇〜〝〠〡〢〣〤〥〦〧〨〩〰〱〲〳〴〵〶〷〸〹〺〻〼〽〾⦅⦆¦" + ), + 1024: ( + "¡¤§¨ª²³´¶¸¹º¼½¾¿ÆÐØÞßæðøþđĦħıIJijĸĿŀŁłʼnŊŋŒœŦŧˇː˘˙˚˛˝―†‡‥′″⁴ⁿ₁₂" + "₃₄℉ℓ№℡™ΩÅ⅓⅔⅛⅜⅝⅞↔↕↖↗↘↙⇒⇔∀∂∃∇∈∋∏∑√∝∞∠∥∧∨∩∪∫∬∮∴∵∼∽≒≠≡≤≥≪≫⊂⊃⊆⊇⊙⊥" + "⌒⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ─━│┃┌┍┎" + "┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊" + "╋▒▣▤▥▦▧▨▩▶▷▼▽◀◁◈◎◐◑☎☏☜☞♀♂♠♡♣♤♥♧♨♩♪♬♭✀、。〃々〆【】〒〓〔〕〞〟㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉" + "㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛㈜㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻㉿㎀㎁㎂㎃㎄㎈㎉㎊㎋㎌㎍㎎" + "㎏㎐㎑㎒㎓㎔㎕㎖㎗㎘㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㎣㎤㎥㎦㎧㎨㎩㎪㎫㎬㎭㎮㎯㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎺㎻㎼㎽㎾㎿㏀㏁㏂㏃㏄㏅㏆㏇㏈㏉㏊" + "㏏㏐㏓㏖㏘㏛㏜㏝!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST" + "UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¢£¬ ̄¥₩" + ), + 1034: "Ю", + }, } diff --git a/tests/fixtures/hancom_saved/formfit_hft_faces_std_glyph_cells.hwpx b/tests/fixtures/hancom_saved/formfit_hft_faces_std_glyph_cells.hwpx new file mode 100644 index 0000000000000000000000000000000000000000..01ac08e97339be997431f3ecb2b6afe8926171b1 GIT binary patch literal 59522 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 literal 0 HcmV?d00001 diff --git a/tests/test_form_fit_hancom_rules.py b/tests/test_form_fit_hancom_rules.py index a27267f1..0e5e4ca2 100644 --- a/tests/test_form_fit_hancom_rules.py +++ b/tests/test_form_fit_hancom_rules.py @@ -71,6 +71,7 @@ MORE_FACES_HANGUL = Path(__file__).parent / "fixtures" / "hancom_saved" / "formfit_more_faces_hangul_cells.hwpx" KOPUB_FACES_CELLS = Path(__file__).parent / "fixtures" / "hancom_saved" / "formfit_kopub_faces_cells.hwpx" HFT_FACES_CELLS = Path(__file__).parent / "fixtures" / "hancom_saved" / "formfit_hft_faces_cells.hwpx" +HFT_STD_GLYPH_CELLS = Path(__file__).parent / "fixtures" / "hancom_saved" / "formfit_hft_faces_std_glyph_cells.hwpx" DODUM_PUNCTUATION = Path(__file__).parent / "fixtures" / "hancom_saved" / "formfit_dodum_punctuation_cells.hwpx" NO_BREAK_SPACES = Path(__file__).parent / "fixtures" / "hancom_saved" / "pages_no_break_spaces.hwpx" FIXED_WIDTH_SPACES = Path(__file__).parent / "fixtures" / "hancom_saved" / "pages_fixed_width_spaces.hwpx" @@ -197,6 +198,31 @@ def test_dodum_punctuation_and_the_exclamation_mark_break_where_hancom_breaks_th assert len(cells) == 144 +def test_latin_greek_cyrillic_and_symbols_in_hancom_font_faces_break_where_hancom_breaks_them() -> None: + # The same in the six faces Hancom ships in its own font format, for twenty glyphs beyond ASCII (Latin letters + # with marks, Greek, Cyrillic, quotation marks and symbols), which take the advances Hancom lays them out at. + # 한양견고딕's § at 30 pt is left out: it is laid out as in a face of 1024 units (659), which no advance in the + # face's 4096 gives at 10, 30 and 40 pt together. + doc = HwpxDocument.open(HFT_STD_GLYPH_CELLS) + cells = list(doc.oxml.sections[0].element.iter(f"{HP}tc")) + faces, checked = set(), 0 + for cell in cells: + paragraph = cell.find(f"{HP}subList/{HP}p") + text = "".join(t.text or "" for t in paragraph.iter(f"{HP}t")) + ref = paragraph.find(f"{HP}run").get("charPrIDRef") + style = text_style_from_refs(doc.oxml, paragraph.get("paraPrIDRef"), [ref]) + points = int(doc.oxml.char_property(ref).attributes["height"]) / 100 + if (style.glyph_face, text[0], points) == ("한양견고딕", "§", 30): + continue + margins = cell.find(f"{HP}cellMargin") + width = int(cell.find(f"{HP}cellSz").get("width")) - int(margins.get("left")) - int(margins.get("right")) + hancom = len(paragraph.findall(f"{HP}linesegarray/{HP}lineseg")) + faces.add(style.glyph_face) + checked += 1 + assert estimate_lines(text, width, points, style) == hancom, (style.glyph_face, f"U+{ord(text[0]):04X}", points) + assert len(cells) == 480 and checked == 478 and len(faces) == 6 + + def test_cells_in_more_faces_break_where_hancom_breaks_them() -> None: # Hancom laid these documents out: each cell holds a glyph and five Hangul syllables in 한컴산뜻돋움, HY중고딕, # HY견고딕, HY신명조, 새굴림 or 한컴 말랑말랑 Regular at one of the two widths where its line count changes, at From 35ad37c9d8c45d34192a15108c2c16dd9ef2ba34 Mon Sep 17 00:00:00 2001 From: airmang <38392618+airmang@users.noreply.github.com> Date: Fri, 16 Oct 2026 22:37:26 +0900 Subject: [PATCH 2/2] Keep independent review additions at distinct changelog and test locations --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55158fec..56126c9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,8 +107,6 @@ 않으면 탭은 폭이 없다. 내어쓰기 자동 탭은 둘째 줄이 시작하는 곳에 왼쪽 위치를 둔다. - 쪽 수 추정에서 강제 줄 바꿈 다음 줄은 첫 줄이 아니다. 들여쓰기를 빼지 않고 다른 줄의 폭으로 잰다. 전에는 첫 줄 폭으로 재서, 들여쓴 문단에서 줄이 하나 더 생길 수 있었다. -- FormFit과 쪽 수 추정이 HCI Poppy·HCI Hollyhock·한양중고딕·한양신명조·한양견고딕·휴먼옛체의 라틴 확장·그리스·키릴 - 문자와 기호(표준 글자 1,678자)도 한/글이 배치하는 폭으로 잰다. 전에는 표에 없어 글자 종류의 평균 폭을 썼다. - FormFit과 쪽 수 추정이 텍스트 내보내기가 쓰지 않는 번호 형식(`KOREAN_DIGIT`, `HANGUL` 등)의 문단 번호를 만나도 멈추지 않는다. 한/글이 재는 번호(`useInstWidth`)이면 그 숫자를 한글 한 글자 폭으로 잰다. 전에는 번호가 자기 글자 모양을 가진 문단에서 `KeyError`가 났다. @@ -123,6 +121,8 @@ - 표 뒤의 조판 부호는 전처럼 표 아래 빈 줄에 선다. - 어울림 개체 옆 좁은 띠에 든 이런 개체는 띠보다 넓어도 띠 안 그 자리에 놓인다. 전에는 개체 아래 전체 폭 줄로 내렸다. +- FormFit과 쪽 수 추정이 HCI Poppy·HCI Hollyhock·한양중고딕·한양신명조·한양견고딕·휴먼옛체의 라틴 확장·그리스·키릴 + 문자와 기호(표준 글자 1,678자)도 한/글이 배치하는 폭으로 잰다. 전에는 표에 없어 글자 종류의 평균 폭을 썼다. - 쪽 수 추정이 문단 위로 올려 놓은 도형(문단 기준 음수 `vertOffset`, 파일에는 부호 없는 32비트로 남는다)을 그만큼 위에 놓인 것으로 센다. 전에는 그 값을 큰 양수로 읽어 문단 줄이 40억 넘게 높아지고, 한 쪽짜리 문서가 세 쪽으로 나왔다. 한/글은 그 도형을 문단 위가 있었을 자리에서 그만큼 위에 놓고, 그 띠에 걸린 앞 줄(아래끝이 띠 위끝보다 아래인 줄)을