afm2pl - instrukcja obsługi, opcje, przykłady poleceń


NAZWA

afm2pl - przekonwertuj metryki czcionek AFM na metryki czcionek TeX pl

STRESZCZENIE

afm2pl [-p encoding_file] [-o] [-e extension_factor] [-s slant_factor] [-f font_dimensions] [-k] [-m letter_spacing] [-l ligkern_spec] [-L ligkern_spec] [-n] input_file[.afm] [output_file[.pl]]

afm2pl [--help] | [--version]

OPIS

afm2pl konwertuje plik afm (Adobe Font Metric) na plik pl (Property List), który z kolei można przekonwertować na plik tfm (TeX Font Metric). Zwykle zachowuje kerny i ligatury, ale zapewnia również dodatkową kontrolę nad nimi.

afm2pl ma być częściowym zamiennikiem afm2tfm, na którym jest oparty. Dzięki afm2tfm zachowanie kernów i ligatur jest możliwe tylko w sposób okrężny, a obsługa ich jest na stałe.

W przypadku czcionek tekstowych, texnansi firmy Y&Y jest dobrym kodowaniem do użycia z afm2pl. Jego zestaw znaków zawiera wszystkie znaki akcentowane, które mogą być potrzebne w językach zachodnich, a także wiele symboli typograficznych, bez potrzeby stosowania czcionek wirtualnych lub oddzielnej czcionki towarzyszącej tekstowi.

Pełna obsługa LaTeX-a dla tego kodowania jest dostępna w postaci pakietu texnansi, który jest już częścią TeX Live i teTeX. Dystrybucje te zawierają również plik kodujący texnansi.enc.

Dystrybucja zawiera wersje texnansi pisane wielkimi i małymi literami, a mianowicie. texnanuc i texnanlc, aby umożliwić używanie wielkich i małych liter w oparciu o czcionki, a nie makra, oraz znane stare kodowanie ot1 plus kilka odmian formatu PostScript .enc (dołączyłem je, ponieważ wydają się nieobecne w teTeX/TeX Live). Jednak sprawdź swoje pliki map, jeśli używasz starych czcionek generowanych przez afm2pl.

Zwracana wartość: 0, jeśli nie ma błędu; liczba ujemna wskazująca liczbę brakujących glifów, jeśli konwersja przebiegła pomyślnie, ale brakuje glifów, oraz 1 w przypadku błędu.

OPCJE

-p plik_kodowania

Domyślnym kodowaniem jest kodowanie określone w pliku afm, które lepiej pasuje do kodowania w pliku czcionek (pfa lub pfb). Jeśli afm2pl-name.enc istnieje, afm2pl użyje tego pliku zamiast name.enc, chyba że zostanie podana opcja -n. Wygenerowany wpis pliku mapy (patrz poniżej) instruuje pdftex lub sterownik dvi, aby ponownie zakodował czcionkę w locie. Ponowne kodowanie w locie nie wymaga wirtualnych czcionek.

-o

Użyj ósemkowego dla wszystkich kodów znaków w pliku pl.

-e czynnik_rozszerzania

Poszerzaj lub zwężaj znaki o extend_factor. Wartość domyślna to 1,0 (szerokość naturalna). Niezalecane[1].

-s czynnik_skoku

Ukośne (skośne) znaki przez slant_factor. Również nie zalecane.

-f wymiary_czcionki

Wartością jest albo słowo kluczowe afm2tfm, albo lista oddzielonych przecinkami maksymalnie pięciu liczb całkowitych. Parametry są wymienione poniżej wraz z ich wartościami domyślnymi i wartościami, gdy określono słowo kluczowe afm2tfm. „Spacja” oznacza szerokość spacji w docelowej czcionce, z wyjątkiem oczywiście ostatniego wiersza. Pamiętaj, że rozmiar projektu to 1000, a wszystkie liczby muszą być nieujemnymi liczbami całkowitymi.

Font dimension Default value Afm2tfm value
stretch space div 2 300 × extend_factor
shrink space div 3 100 × extend_factor
extra space space div 3 missing
quad 2 × width of ‘0’ 1000 × extend_factor
space (space source font) × extend_factor (space source font) × extend_factor

W przypadku czcionek o stałej gęstości obowiązują różne wartości:

Font dimension Default value Afm2tfm value
stretch 0 0
shrink 0 0
extra space space missing
quad 2 × character width 1000 × extend_factor
space character width character width

Określ tylko inne niż domyślne rozciągnięcie i zmniejsz, np. 150,70 i tylko niedomyślna dodatkowa spacja z ,,10.

-k

Zachowaj oryginalne ligatury. Ta opcja działa tylko w połączeniu z dodatnimi odstępami między literami; zobacz sekcję dotyczącą odstępów między literami i dodatkowych informacji o ligkernach.

-m odstępy między literami

Przestrzeń liter według letter_spacing/1000 em (liczba całkowita). Jest to przydatne do poprawiania wyglądu tekstu pisanego wielkimi literami. Wypróbuj wartość np. 50 lub 100. Ale zobacz sekcję dotyczącą odstępów między literami i dodatkowych informacji o ligkernach, aby uzyskać szczegółowe informacje. Lepszą alternatywą jest jednak pozwolenie pdftex na zrobienie odstępów między literami. Pakiet microtype daje użytkownikom LaTeX dostęp do tej funkcji.

-l specyfikacja_ligkern, -L specyfikacja_ligkern

Aby uzyskać szczegółowe informacje, zobacz sekcję dotyczącą informacji o dodatkowych ligkernach.

-n

Brak przedrostka. W przypadku plików .enc- i .lig program zwykle poprzedza nazwę przedrostkiem `afm2pl-'. Tylko jeśli nazwa pliku z prefiksem nie zostanie znaleziona, wyszuka oryginalną nazwę pliku. Ta opcja zapobiega wyszukiwaniu nazwy pliku z prefiksem.

-V

Gadatliwy. Jeśli jest włączone, zgłasza liczbę brakujących glifów na stderr i ich nazwy na stdout.

--pomoc

Wyświetl krótki komunikat o użytkowaniu.

--wersja

Wyświetl numer wersji afm2pl.

WPISY W PLIKU MAPLIKU

afm2pl zapisuje wpis mapfile do pliku o tej samej nazwie bazowej co plik wyjściowy pl, ale z rozszerzeniem .map. Można go użyć do pliku mapy dvips i pliku mapy pdftex. Zakłada się, że plik pfb ma taką samą nazwę bazową jak plik afm i musi zostać pobrany. Może być konieczna ręczna edycja tego wpisu.

Możesz skonfigurować dvips i pdftex, aby odczytywać ten dodatkowy plik mapy lub w inny sposób dodać wpis do istniejącego pliku mapy.

Sprawdź swoje pliki map! Aby zmniejszyć prawdopodobieństwo konfliktów nazw, pliki .enc-, które są częścią afm2pl (ot1, ot1csc, ot1ital, ot1tt, texnanlc i texnanuc) zostały teraz poprzedzone przedrostkiem afm2pl-. Pliki .enc są przywoływane w plikach map. Jeśli masz stare pliki .tfm wygenerowane przez afm2pl używające tych, powinieneś zaktualizować ich fragmenty mapfile i ponownie uruchomić updmap lub updmap-sys. Lub możesz skopiować odpowiednie pliki enc do osobistego lub lokalnego drzewa texmf pod ich poprzednimi nazwami bez prefiksów.

DODATKOWE INFORMACJE O LIGKERNIE

Większości użytkowników zaleca się pozostawienie tego bałaganu w spokoju i zaakceptowanie domyślnego zachowania.

Ligatury i kerny obecne w pliku afm można modyfikować na różne sposoby. Domyślnie plik kodowania jest skanowany w poszukiwaniu dodatkowych specyfikacji ligkern, których format zostanie opisany poniżej. Jeśli w pliku kodującym nie ma specyfikacji ligkern, dodatkowe specyfikacje ligkern zostaną odczytane z pliku [afm2pl-]default.lig. Wartość 0 dla ligkern_spec oznacza, że ligatury i kerny z pliku afm nie zostaną zmienione, a wartość 1 określa zachowanie domyślne. Można również określić oddzieloną przecinkami listę plików z dodatkowymi specyfikacjami ligkerns.

Jeśli afm2pl jest skompilowany z biblioteką kpathsea, to te pliki będą wyszukiwane w katalogu $TEXMF/fonts/lig.

Pamiętaj, że ligatury i kerny to wskazówki dotyczące aplikacji do składu; nie ma potrzeby pobierania tych informacji do drukarki ani udostępniania ich sterownikowi dvi.

Parser informacji ligkern został odziedziczony po afm2tfm praktycznie bez zmian. Specyfikacja ligkern może mieć jedną z następujących postaci:

glyph_name1 glyph_name2 lig_op glyph_name3 ;

To określa ligaturę. Możliwe wartości dla lig_op to =:, |=:, |=:>, =:|, =:|>, |=:|, |=:|> i |=:|>> . Odpowiadają one LIG, /LIG, /LIG>, LIG/, LIG/>, /LIG/, /LIG/>, /LIG/>> w składni .pl; zobacz dokumentację pltotf i pliki .lig w dystrybucji.

glyph_name1 <> glyph_name2 ;

Kern nazwa_glifu1 jako nazwa_glifu2.

glyph_name1 {} glyph_name2 ;

Usuń kern między nazwa_glifu1 a nazwa_glifu2. Wartość * dla nazwy glifu jest interpretowana jako symbol wieloznaczny.

|| = glyph ;

Ustaw (prawy) znak granicy na glif. glif może być glifem lub szczeliną w wektorze kodującym. Wybranie glifu, który nie występuje w kodowaniu wyjściowym, jest równoznaczne z całkowitym brakiem określenia znaku granicznego. Można wybrać zakodowaną nazwę glifu, która nie występuje w afm. W rzeczywistości robi to default.lig: ||=cwm;.

Możesz skopiować kerny niezaszyfrowanego znaku do pliku borderchar. Poniżej spacja jest niezakodowanym znakiem:

|| <> space ;

Ta specyfikacja ligkern powinna wystąpić przed tą, która usuwa kerny spacji.

Specyfikacja ligkern powinna być zawarta w jednej linii. Jedna linia może zawierać kilka specyfikacji ligkern, oddzielonych spacjami. zauważ, że; (spacja, po której następuje średnik) jest uważana za część specyfikacji ligkern. Zobacz pliki lig zawarte w tej dystrybucji. Przykład:

one {} * ; * {} one ; two {} * ; * {} two ;

Wiersze ze specyfikacjami ligkern w pliku kodowania powinny zaczynać się od % LIGKERN. Specyfikacje Ligkern w pliku lig mogą opcjonalnie zaczynać się w ten sposób.

ODSTĘPY I DODATKOWE INFORMACJE O LIGKERN

Odstępy między literami mają różne skutki uboczne dla informacji ligkern. Zamiast po prostu zastosować dodatkowe informacje ligkern (patrz poprzednia sekcja), wykonuje się następujące czynności:

  1. W przypadku dodatniego odstępu między literami, rodzime ligatury są usuwane, chyba że podano opcję -k.

  2. Dodatkowe informacje ligkern są stosowane jak zwykle, z tym wyjątkiem, że w przypadku dodatnich odstępów między literami stosowane są inne wartości domyślne: -l 0 jest po cichu ignorowane, komentarze ligkern w pliku kodowania są ignorowane, a defpre.lig jest odczytywany zamiast default.lig.

  3. Stosowane są odstępy między literami. To dodaje wiele kernów i modyfikuje istniejące kerny.

  4. Stosowana jest dodatkowa informacja o ligkernie określona za pomocą -L. Jedyne specyfikacje ligkern, które są tu dozwolone, to usuwanie par kerningu (z operatorem {}). Wartości 0 i 1 mają podobne znaczenie jak dla parametru -l. Format tfm ma miejsce tylko na około 180x180 ligatur i par kerningu. To wystarczy do kodowania OT1, ale do kodowania texnansi trzeba usunąć całkiem sporo specyfikacji ligkern. Program pltotf usunie wszystkie informacje o ligkernach, jeśli pozostanie zbyt wiele ligatur i kernów. Domyślnym plikiem lig jest defpost.lig. Ten plik wyrzuca pary kerningu, które prawdopodobnie nie będą uwzględniane w odstępach między literami, takie jak kerny zawierające akcenty lub kerny ze znakiem interpunkcyjnym lub prawym nawiasem kwadratowym po lewej stronie. Nie dodaje kernów odstępów między literami obejmujących znaki graniczne. Zamiast tego przestrzeń czcionek jest zwiększana o dwukrotność odstępu między literami. defpost.lig wyrzuca wystarczającą liczbę kernów w przypadku kodowania texnansi. W przypadku innych kodowań może być konieczne wyrzucenie dodatkowych par kerningu.

WIELKIE I MAŁE LITERY W OPARCIU O CZCIONKĘ

Dystrybucja zawiera wektory kodujące texnanuc.enc i texnanlc.enc, które tworzą czcionki składające się wyłącznie z wielkich i małych liter

Główne zastosowania czcionki składającej się wyłącznie z wielkich liter to nagłówki stron i nagłówki sekcji. Jeśli zawierają one matematykę, wielkie litery oparte na makrach spowodowałyby nieprzyjemne komplikacje. Przykład:

afm2pl -p texnanuc ptmr8a ptmup8y
pltotf ptmup8y

Aby uzyskać najlepsze wyniki, należy dodać odstępy między literami. W LaTeX najlepiej jest to zrobić za pomocą pakietu microtype; zobacz dokumentację tego pakietu. Ale można to również zrobić za pomocą afm2pl:

afm2pl -p texnanuc -m 100 ptmr8a ptmup8y

Wymaga to ostrożności; patrz wyżej.

Możesz użyć tej nowej czcionki w kontekście wyboru czcionki LaTeX w następujący sposób:


<preamble commands>
\makeatletter
{\nfss@catcodes
\DeclareFontShape{LY1}{ptm}{m}{upp}{<-> ptmup8y}{}}
\makeatother
...
\begin{document}
...
{\fontshape{upp}\selectfont uppercase text}

Zauważ, że upp to po prostu nowo wymyślona nazwa kształtu.

Ligatura sz ß

Zauważ, że kodowanie texnanuc nie zawiera glifu dla sz ligatury ß; będziesz musiał albo zastąpić ss, albo dostarczyć rozwiązanie oparte na makrach. Poniższy kod wykorzystuje zwykły glif lub zastępuje litery ss, w zależności od tego, czy glif istnieje w bieżącej czcionce:


\def\ss{%
  \setbox0\hbox{\char25}%
  \ifnum\wd0=0 ss\else\box0\fi
}

W LaTeX ten kod wydaje się działać wystarczająco dobrze, chociaż czasami może być konieczne wstawienie \protect. Lepszym rozwiązaniem może być szósty parametr makra \DeclareFontShape, ale nie udało mi się go uruchomić.

AFM2PL, FONTINST I SZTUCZNE LITERKI

Afm2pl nie obsługuje wirtualnych czcionek. Oznacza to, że w przypadku takich rzeczy, jak sztuczne kapitaliki, musisz zwrócić się gdzie indziej, np. do pakietu fontinst, który jest częścią każdej głównej dystrybucji TeX-a.

Poszukaj w texmf/tex/fontinst plików obsługi fontinst, które pozwalają wygenerować czcionkę małymi literami (pliki tfm i vf) z pliku tfm wygenerowanego przez afm2pl. Ten pakiet obsługuje tylko kodowanie texnansi.

Nie powinno być żadnego problemu z zrobieniem tego samego dla kodowania OT1. Istnieje jednak kilka odmian kodowania OT1, którymi należy się zająć. Ponadto, o ile mi wiadomo, nie ma oficjalnie zatwierdzonych nazw PostScript dla wszystkich odmian kodowania OT1; nazwy fontinst zawierają spacje i dlatego nie można ich używać jako nazw PostScript.

ZMIENIONO W WERSJI 0.7.1

Aby uniknąć konfliktów nazw, pliki .enc- i .lig dystrybuowane z afm2pl otrzymały przed nazwą afm2pl-. Teraz sam program szuka najpierw nazwy dodanej na początku. Jeśli plik .enc- lub .lig nie zostanie znaleziony, będzie szukał oryginalnej nazwy pliku. Zmiana nazwy plików afm2pl .enc może wymagać modyfikacji niektórych plików map.

URL-e

Strona domowa afm2pl to http://tex.aanhet.net/afm2pl/.

Artykuł Płytka instalacja czcionek[2] (EuroTeX 2006 Proceedings, opublikowany jako TUGboat[3] numer 27.1) ilustruje użycie afm2pl.

UWAGI

1.

Tyle że prawdopodobnie zawężony Courier jest mniej irytujący niż Courier o pełnej szerokości, gdy jest używany w połączeniu z normalną czcionką proporcjonalną. Dla Courier wybierz .833, aby dopasować szerokość cmtt. Jeszcze lepiej, w ogóle nie używaj Courier; większość dystrybucji TeX-a oferuje różne dobre zamienniki.

2.

Instalacja czcionek w płytki sposób

https://tug.org/TUGboat/tb27-1/tb86kroonenberg-fonts.pdf

afm2pl jest utrzymywany jako część TeX Live.