Załóżmy, że mam czcionkę w popularnym formacie (skromnie .ttf
, .otf
itp) i mam prawa go modyfikować. W tej chwili jest to normalna czcionka z różnymi czcionkami (glifami?) O różnych szerokościach i odstępach. W jaki sposób mógłbym zamienić tę czcionkę na czcionkę o stałej szerokości (np. Wszystkie znaki mają takie same wymiary itp.)?
Jeśli to możliwe, czy są jakieś zautomatyzowane narzędzia, które mogą pomóc ci zgadnąć? (Wyniki nie muszą być idealne .) Czcionka może być duża (wiele znaków), a jej edytowanie może być uciążliwe.
Wszelkie sugestie dotyczące problemu są mile widziane! :)
Zastrzeżenie: Przepraszam, jeśli jest to uważane za proste howto , ale Google ma bardzo mało informacji na ten temat, a dla programisty, który nie zajmuje się grafiką ani czcionkami, z pewnością nie jest to proste . Przepraszam również, jeśli moja terminologia jest wyłączona ...: P
Odpowiedzi:
Jeśli nie masz jeszcze żadnego oprogramowania do edycji czcionek, dobrą wiadomością jest to, że Fontforge jest darmowym i otwartym oprogramowaniem. Zła wiadomość jest taka, że ma stosunkowo wysoką krzywą uczenia się i nieco nietypowy interfejs użytkownika.
Zasadniczo, aby czcionkę można było uznać za monospace, każdy glif musi mieć tę samą szerokość, aż do dokładnie takiej samej liczby jednostek. Obejmuje to nawet glify, które zwykle powinny mieć zerową szerokość lub określoną szerokość (na przykład spacje em, myślniki em itp.).
Zobacz wpis FAQ „Jak oznaczyć czcionkę jako monospaced?”
Aby faktycznie edytować szerokość wszystkich glifów jednocześnie, możesz po prostu przejść do menu „Metryki” -> „Ustaw szerokość” w menu, ale nie spodziewałbym się, że zadziała dla wszystkich znaków. Prawdopodobnie będziesz musiał ręcznie edytować wszystkie szerokie znaki, takie jak „W”, „M”, „@” itd., Aby nie nakładały się na siebie. A łączenie znaków diakrytycznych (akcentów przeznaczonych do „łączenia” z literami w czasie renderowania) może popsuć wszystkie ich pozycje (co jest trudne do przetestowania, jeśli jesteś Amerykaninem / Anglikiem i prawie nigdy ich nie używasz).
Osoba, która wie, jak tworzyć i edytować czcionki, byłaby w stanie wykonać to zadanie, ale nadal nie byłoby to proste.
źródło
Set Width
podMetrics
menu rozwijanego: ustawić wszystkie glify do jednej średniej szerokości (zmiana później w razie potrzeby), a wreszcie wybraćEqualise Sidebearings
również podMetrics
menu, aby wyśrodkować glify w EM-kwadratowy. Oczywiście: przestudiuj, jak inni przezwyciężyli trudności związane z projektowaniem udanych czcionek o stałej szerokości.thomasrutter oferuje więcej technicznych odpowiedzi; Pokażę ci kilka zasad typografii, aby zniechęcić cię do robienia tego, co chcesz robić, chyba że naprawdę musisz.
Przybliż „i” i „m” w Consolas lub Courier, a następnie Corbel lub Verdana. Zauważ, jak różne muszą być litery, aby monospace działało. Aby poprawnie przekonwertować czcionkę na monospace, potrzeba dużo wiedzy i pracy. Ogólny pomysł rozciągania czcionek w ogóle jest odrzucany przez każdego projektanta wartego swojej soli, dlatego nawet przejście z normalnego do skondensowanego wariantu wymaga przerysowania wszystkich glifów.
Spójrz więc na Consolas vs. Corbel tutaj i zobacz, jak po powiększeniu możesz spojrzeć na 1) odstępy między literami, 2) spójność grubości obrysu i 3) jak każda litera pasuje do pudełka. Spójrz na twarz o stałej szerokości (pierwsza) w porównaniu do twarzy o zmiennej odległości (druga), a następnie zobacz trzecią i czwartą, aby zobaczyć, co się stanie, gdy spróbujesz rozciągnąć i spację, aby ją wyrównać. Po czwarte, sprawiłem, że Pani skurczyła się do 75%, aby dostać się do pudełka, ale teraz są znacznie szczuplejsze niż Is. będzie to zauważalne, gdy zostanie użyte.
Krótko mówiąc: nie zadzieraj z czcionkami; są o wiele groźniejsze, niż można się było spodziewać!
źródło
Natknąłem się na ten problem, próbując edytować kod źródłowy przy użyciu symboli Unicode. W tym kontekście większość kodu źródłowego jest wyświetlana w jednej czcionce o stałej szerokości, a kilka symboli, które nie są objęte tą czcionką, ostatecznie psuje wyrównanie.
Chociaż prawdą jest, że „monospacifying” pełna czcionka przyniesie okropne wyniki (kerning, szerokości obrysu i ogólny balans zostaną całkowicie pomieszane), importowanie tylko kilku symboli z czcionki o zmiennej szerokości do czcionki o jednolitej przestrzeni daje przyzwoite wyniki. Poniższa animacja pokazuje użycie Consolas + Symbola jako awaryjne, w porównaniu do użycia Consolas + monospacified wersja Symbola:
Jest to bezużyteczne w przypadku zaawansowanej typografii, ale jest to dobry kompromis, jeśli chcesz używać symboli w kodzie źródłowym bez rujnowania wcięć. Istnieje jednak kilka zastrzeżeń:
Uruchomiłem projekt GitHub, aby automatycznie obsługiwać tego rodzaju transformacje czcionek. Zawiera wstępnie wygenerowane czcionki i kod wykorzystujący wiązania Python dla fontforge.
Zobacz także to pytanie emacs.se .
źródło
W edytorze tekstu I: (1) utworzyłem tabelę; (2) podzielone na kolumny - jedna kolumna na każdą literę; (3) wyśrodkował litery; oraz (4) uczyniły wszystkie granice, wewnętrznymi i zewnętrznymi niewidocznymi.
źródło