کتابخانه‌ی استاندارد · گرافیک و بازی

حروف‌چینی gui.typeset

متن برای رابط بومی: قلم، قلم جایگزین، شکل‌دهی اوپن‌تایپ، دوسویه، شکستن خط، چیدن بند، ماسک گلیف و هندسه‌ی نشانگر.

واردسازی رابط گرافیکی.حروف‌چینی

نام آرگومان‌ها شناسه‌ی خود کد است و معادل فارسی ندارد؛ گونه‌ها، کلیدواژه‌ها و نام بسته‌ها با معادل فارسی نوشته می‌شوند.

این بسته متن سبک‌دار را به خط‌هایی از گلیف‌های جایگذاری‌شده تبدیل می‌کند و این گلیف‌ها را به صورت ماسک پوشش رسم می‌کند. نیمه‌ی متنی رابط بومی سلام است: زبان صفحه هر سرتیتر، بند و ورودی را با آن می‌چیند و نقاش ماسک‌هایش را با پیکسل‌ها می‌آمیزد. به زبان سلام و بدون هیچ کتابخانه‌ی بیرونی نوشته شده و متن فارسی و متن آمیخته‌ی فارسی و انگلیسی کار اصلی آن است.

گام‌ها همان گام‌های مرورگر است. یک FontCollection قلم‌ها را نگه می‌دارد، برای هر نویسه از فهرست خانواده‌ها مثل font-family چهره‌ای برمی‌گزیند و برای هر خط به چهره‌های دیگر، از جمله قلم‌های سیستم، برمی‌گردد. NewParagraph تکه‌های سبک‌دار را به دنباله‌های دوسویه، خط و قلم بخش می‌کند و هر دنباله را یک بار با جدول‌های اوپن‌تایپ قلم شکل می‌دهد: شکل‌های پیوسته، ترکیب‌ها، فاصله‌گذاری و جای اعراب. LayoutParagraph خط‌ها را در هر پهنایی بی شکل‌دهی دوباره می‌شکند، هر خط را برای متن راست‌به‌چپ می‌چیند و تراز می‌کند. RasterizeGlyph و GlyphCache ماسک ۸ بیتی می‌دهند و HitTest، CaretRect و SelectionRects هندسه‌ای را که یک ویرایشگر لازم دارد.

نکته‌هایی که باید بدانید

  • فقط طرح TrueType پشتیبانی می‌شود. قلم‌هایی با طرح CFF (بیشتر پرونده‌های .otf) را مجموعه کنار می‌گذارد و LoadFont نمی‌پذیرد.
  • جای‌ها جای بایت UTF-8 در Paragraph.text هستند که متن همه‌ی تکه‌ها پشت سر هم است. SpanAt یک جای بایت را به تکه‌اش برمی‌گرداند و هر دنباله‌ی گلیف tag تکه‌اش را دارد.
  • حساب چیدن با ممیز ثابت و به یک شصت‌وچهارم پیکسل است و ماسک‌ها با حساب صحیح ساخته می‌شوند، پس عددها و پیکسل‌ها در هر سیستم‌عامل و پشتی یکی است.
  • اگر قلم ویژگی‌های پیوستن عربی را نداشته باشد شکل‌دهی از شکل‌های نمایشی یونیکد استفاده می‌کند، مثل کاری که std/ai/image همیشه می‌کرد؛ آن بسته اکنون برای قلم از همین بسته استفاده می‌کند.
  • ماسکی که CachedGlyph می‌دهد مال نهانگاه است و تا فراخوانی بعدی که ممکن است آن را بیرون کند معتبر است؛ پیش از خواستن گلیف دیگر رسمش کنید.
  • نمونه‌ها قلم‌ها را از پوشه‌ی books/fonts مخزن سلام می‌خوانند.

چیدن یک بند آمیخته‌ی فارسی و انگلیسی

هر تکه فهرست خانواده و اندازه‌ی خودش را دارد و برچسب نشان می‌دهد هر دنباله از کدام عنصر آمده است. بند یک بار شکل می‌گیرد و سپس در دو پهنا چیده می‌شود. در این بند راست‌به‌چپ واژه‌ی انگلیسی ترتیب چپ‌به‌راست خودش را درون خط نگه می‌دارد و هر خط به سمت راست، یعنی سمت آغاز، تراز می‌شود.

typeset-guide-paragraph.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده

تابع ریشه:
    fonts := مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/")
    ناپایا fc := حروف‌چینی.مجموعه قلم تازه()
    حروف‌چینی.افزودن پرونده قلم(fc، fonts + "XB Zar.ttf")
    حروف‌چینی.افزودن پرونده قلم(fc، fonts + "DejaVuSansMono.ttf")
    ناپایا spans := وکتور {} برگردان وکتور<حروف‌چینی.تکه متن>
    spans.بیفزا(حروف‌چینی.تکه متن { متن = "زبان برنامه‌نویسی "، خانواده‌های قلم = "XB Zar"، اندازه = 20.0، برچسب = 1 })
    spans.بیفزا(حروف‌چینی.تکه متن { متن = "Salam"، خانواده‌های قلم = "DejaVu Sans Mono"، اندازه = 16.0، برچسب = 2 })
    spans.بیفزا(حروف‌چینی.تکه متن { متن = " متن فارسی را درست می‌چیند."، خانواده‌های قلم = "XB Zar"، اندازه = 20.0، برچسب = 3 })
    ناپایا p := حروف‌چینی.بند تازه(fc، spans، حروف‌چینی.سبک بند {})
    سرچاپ "min"، حروف‌چینی.پهنای کمینه محتوا(p)، "max"، حروف‌چینی.پهنای بیشینه محتوا(p)
    هر width در [400.0، 160.0]:
        ناپایا l := حروف‌چینی.چیدن بند(p، fc، width)
        سرچاپ "width"، width، "lines"، l.خط‌ها.طول()، "height"، l.بلندی
        هر line در l.خط‌ها:
            چاپ "  baseline "، line.خط پایه، ":"
            ناپایا k := line.آغاز دنباله
            تا k کوچکتر line.آغاز دنباله + line.شمار دنباله:
                run := l.دنباله‌ها.بگیر(k)
                اگر run.شمار گلیف بزرگتر 0:
                    چاپ " [tag "، run.برچسب، " x "، run.ایکس، (run.راست به چپ ? " rtl" : " ltr")، "]"
                پایان
                k++
            پایان
            سرچاپ ""
        پایان
        حروف‌چینی.آزادسازی چیدمان(l)
    پایان
    حروف‌چینی.آزادسازی بند(p)
    spans.آزادکن()
    حروف‌چینی.آزادسازی مجموعه قلم(fc)
پایان
خروجیmin 77.546875 max 377.84375 width 400 lines 1 height 30.28125 baseline 20.515625 : [tag 3 x 22.15625 rtl ] [tag 3 x 222.734375 rtl ] [tag 2 x 234.78125 ltr ] [tag 1 x 282.984375 rtl ] width 160 lines 3 height 90.84375 baseline 20.515625 : [tag 1 x 48.3125 rtl ] baseline 50.796875 : [tag 3 x 10.421875 rtl ] [tag 3 x 99.75 rtl ] [tag 2 x 111.796875 ltr ] baseline 81.078125 : [tag 3 x 54.078125 rtl ]

MinContentWidth و MaxContentWidth همان چیزی است که چیدمان فلکس یا جدول پیش از تعیین پهنا لازم دارد. با تغییر پهنا فقط LayoutParagraph دوباره فراخوانده می‌شود و قلم‌ها و شکل‌دهی در بند می‌مانند.

نشانگر و گزینش در یک ورودی متن

یک ورودی یک TextPosition نگه می‌دارد: جای بایت و این‌که به متن پیش از خود می‌چسبد یا نه. HitTest یک کلیک را به جای متن تبدیل می‌کند، MoveVisual آن را مثل کلیدهای جهت روی صفحه جابجا می‌کند و CaretRect می‌گوید کجا رسم شود. در خطی با دو جهت، نشانگر از روی حرف‌های انگلیسی همان‌طور می‌گذرد که چشم روی صفحه دنبال می‌کند.

typeset-guide-caret.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده

تابع ریشه:
    ناپایا fc := حروف‌چینی.مجموعه قلم تازه()
    حروف‌چینی.افزودن پرونده قلم(fc، مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/XB Zar.ttf"))
    ناپایا spans := وکتور {} برگردان وکتور<حروف‌چینی.تکه متن>
    spans.بیفزا(حروف‌چینی.تکه متن { متن = "سلام ABC دنیا"، خانواده‌های قلم = "XB Zar"، اندازه = 20.0 })
    ناپایا st := حروف‌چینی.سبک بند {}
    st.فاصله‌های سفید = حروف‌چینی.فاصله سفید.PreWrap
    ناپایا p := حروف‌چینی.بند تازه(fc، spans، st)
    ناپایا l := حروف‌چینی.چیدن بند(p، fc، 0.0)
    ناپایا pos := حروف‌چینی.آزمون برخورد(p، l، l.پهنا، 10.0)
    سرچاپ "click at the right edge: offset"، pos.جابجایی
    تکرار 6:
        pos = حروف‌چینی.جابجایی دیداری(p، l، pos، نادرست)
        caret := حروف‌چینی.مستطیل نشانگر(p، l، pos)
        سرچاپ "left arrow: offset"، pos.جابجایی، "caret x"، caret.ایکس
    پایان
    rects := حروف‌چینی.مستطیل‌های گزینش(p، l، 6، 15)
    سرچاپ "selection of 'م ABC د' needs"، rects.طول()، "rectangles"
    rects.آزادکن()
    حروف‌چینی.آزادسازی چیدمان(l)
    حروف‌چینی.آزادسازی بند(p)
    spans.آزادکن()
    حروف‌چینی.آزادسازی مجموعه قلم(fc)
پایان
خروجیclick at the right edge: offset 0 left arrow: offset 2 caret x 95.625 left arrow: offset 4 caret x 89.140625 left arrow: offset 6 caret x 82.640625 left arrow: offset 8 caret x 74.65625 left arrow: offset 9 caret x 69.328125 left arrow: offset 11 caret x 55.25 selection of 'م ABC د' needs 1 rectangles

گزینش بازه‌ای که از مرز دو جهت می‌گذرد ممکن است بیش از یک مستطیل بخواهد؛ این‌جا یکی است چون تکه‌های گزیده روی صفحه کنار هم هستند. NextGrapheme و NextWordEnd جابجایی منطقی برای پاک کردن و کلید کنترل با جهت را می‌دهند.

گونه‌ها

چهره قلم FontFace

ساختار چهره قلم
یک چهره از مجموعه‌ی قلم؛ چهره‌های سیستم هنگام نخستین استفاده بار می‌شوند.
نامانگلیسیگونهتوضیح
مسیرpathرشته = ""پرونده‌ی چهره؛ برای بایت‌ها خالی است.
اندیس چهرهindexصحیح = 0شماره‌ی چهره در پرونده.
خانوادهfamilyرشته = ""نام خانواده.
سبکstyleرشته = ""نام سبک.
وزنweightصحیح = 400وزن.
موربitalicمنطقی = نادرستچهره مورب است.
بارشدهloadedمنطقی = نادرستداده‌ی قلم در حافظه است.
ناموفقfailedمنطقی = نادرستبارگذاری پرونده شکست خورد و چهره کنار گذاشته می‌شود.
قلم بارشدهfontقلمقلم بارشده.
gui-typeset-Fonts.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده
واردسازی بایگانی
واردسازی فشرده سازی

تابع font_path(name: رشته): رشته:
    برگشت مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/" + name)
پایان

تابع ریشه:
    ناپایا ok := نادرست
    ناپایا f := حروف‌چینی.بارگذاری قلم(font_path("XB Zar.ttf")، ok)
    m := حروف‌چینی.متریک‌ها(f)
    سرچاپ حروف‌چینی.نام خانواده(f)، حروف‌چینی.نام سبک قلم(f)، حروف‌چینی.نام کامل قلم(f)، حروف‌چینی.متن نام(f، 1)
    سرچاپ حروف‌چینی.وزن قلم(f)، حروف‌چینی.مورب است(f)، حروف‌چینی.واحد در ام(f)، حروف‌چینی.تعداد نویسه‌ها(f)، حروف‌چینی.قلم معتبر(f)
    سرچاپ m.صعود، m.نزول، m.فاصله سطرها، m.ارتفاع ایکس، m.ارتفاع حرف بزرگ، m.جای زیرخط، m.ضخامت زیرخط، m.واحد ام
    سرچاپ حروف‌چینی.ضریب مقیاس(f، 20.48)، حروف‌چینی.صعود پیکسلی(f، 20.48)، حروف‌چینی.نزول پیکسلی(f، 20.48)، حروف‌چینی.ارتفاع خط پیکسلی(f، 20.48)
    beh := حروف‌چینی.اندیس نویسه(f، 0x0628)
    ناپایا x0 := 0
    ناپایا y0 := 0
    ناپایا x1 := 0
    ناپایا y1 := 0
    سرچاپ beh، حروف‌چینی.پیشروی نویسه(f، beh)، حروف‌چینی.کادر نویسه(f، beh، x0، y0، x1، y1)، x0، y0، x1، y1، حروف‌چینی.نویسه طرح دارد(f، beh)
    سرچاپ حروف‌چینی.کرنینگ(f، beh، beh)
    حروف‌چینی.آزادسازی قلم(f)
    ناپایا bok := نادرست
    ناپایا buf := بایگانی.خواندن پرونده دودویی(font_path("XB Zar Bd.ttf")، bok)
    سرچاپ حروف‌چینی.شمار چهره‌ها(buf.داده، buf.طول)، حروف‌چینی.قلم سی‌اف‌اف است(buf.داده، buf.طول)
    ناپایا pok := نادرست
    bold := حروف‌چینی.خواندن قلم با اندیس(buf.داده، buf.طول، 0، pok)
    ناپایا fc := حروف‌چینی.مجموعه قلم تازه()
    حروف‌چینی.افزودن قلم(fc، bold)
    حروف‌چینی.افزودن قلم از بایت‌ها(fc، buf.داده، buf.طول)
    فشرده سازی.آزادسازی بافر(buf)
    حروف‌چینی.افزودن پرونده قلم(fc، font_path("XB Zar.ttf"))
    حروف‌چینی.افزودن پرونده قلم(fc، font_path("DejaVuSansMono.ttf"))
    سرچاپ حروف‌چینی.شمار چهره‌های مجموعه(fc)، حروف‌چینی.یافتن چهره(fc، "XB Zar"، 400، نادرست)، حروف‌چینی.یافتن چهره(fc، "xb zar"، 700، نادرست)
    سرچاپ حروف‌چینی.چهره برای نویسه(fc، "DejaVu Sans Mono, XB Zar"، 400، نادرست، 0x41)، حروف‌چینی.چهره برای نویسه(fc، "monospace"، 400، نادرست، 0x06F4)
    face := fc.چهره‌ها.بگیر(2)
    سرچاپ face.خانواده، face.سبک، face.وزن، face.مورب، حروف‌چینی.وزن قلم(حروف‌چینی.قلم چهره(fc، 0))
    حروف‌چینی.آزادسازی مجموعه قلم(fc)
    ناپایا lf := حروف‌چینی.بارگذاری قلم با اندیس(font_path("XB Zar It.ttf")، 0، ok)
    سرچاپ حروف‌چینی.مورب است(lf)
    حروف‌چینی.آزادسازی قلم(lf)
    ناپایا more := حروف‌چینی.مجموعه قلم تازه()
    سرچاپ حروف‌چینی.افزودن پوشه قلم(more، مسیر پرونده.پوشه(font_path("x"))) بزرگتر 90
    dirs := حروف‌چینی.پوشه‌های قلم سیستم()
    سرچاپ dirs.طول() بزرگتر 0، حروف‌چینی.افزودن قلم‌های سیستم(more) بزرگتربرابر 0
    dirs.آزادکن()
    حروف‌چینی.آزادسازی مجموعه قلم(more)
    ناپایا pf := حروف‌چینی.خواندن قلم(پوچ، 0، ok)
    سرچاپ ok
    حروف‌چینی.آزادسازی قلم(pf)
پایان
خروجیXB Zar Regular XB Zar XB Zar 400 false 2048 949 true 2100 1000 0 934 1393 -570 60 2048 0.01 21 -10 31 358 1771 true 0 -507 1603 823 true 0 1 false 4 2 0 3 3 XB Zar Regular 400 false 700 true true true true false

مجموعه قلم FontCollection

ساختار مجموعه قلم
مجموعه‌ای از چهره‌ها برای انتخاب قلم و جایگزین.
نامانگلیسیگونهتوضیح
چهره‌هاfacesوکتور<چهره قلم>چهره‌ها به ترتیب افزوده‌شدن.
جایگزین‌هاfallbackنگاشت<صحیح، صحیح>پاسخ‌های نهان جایگزین برای هر نویسه.
یادداشت چهرهmemoنگاشت<رشته، صحیح>انتخاب‌های نهان چهره برای هر فهرست خانواده، وزن، سبک و نویسه، تا شکل‌دهی یک صفحه نام خانواده‌ها را برای هر نویسه دوباره مقایسه نکند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

گلیف شکل‌یافته ShapedGlyph

ساختار گلیف شکل‌یافته
یک گلیف از خروجی شکل‌دهی.
نامانگلیسیگونهتوضیح
شناسهidصحیح = 0شماره‌ی گلیف.
خوشهclusterصحیح = 0جای بایت UTF-8 متنی که از آن آمده است.
پیشروی افقیx_advanceصحیح = 0پیشروی به واحد قلم.
جابجایی افقیx_offsetصحیح = 0جابجایی افقی به واحد قلم.
جابجایی عمودیy_offsetصحیح = 0جابجایی عمودی به واحد قلم؛ رو به بالا مثبت است.
gui-typeset-Shape.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده

تابع ریشه:
    ناپایا ok := نادرست
    ناپایا f := حروف‌چینی.بارگذاری قلم(مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/XB Zar.ttf")، ok)
    glyphs := حروف‌چینی.شکل‌دهی متن(f، "می‌خواهم"، درست، ""، "fa")
    هر g در glyphs:
        سرچاپ g.شناسه، g.خوشه، g.پیشروی افقی، g.جابجایی افقی، g.جابجایی عمودی
    پایان
    glyphs.آزادکن()
    سرچاپ حروف‌چینی.شکل‌دهی عربی("سلام")
    سرچاپ حروف‌چینی.متن راست به چپ است("سلام")، حروف‌چینی.جهت پایه("Salam سلام") برابر حروف‌چینی.جهت متن چپ به راست
    سرچاپ حروف‌چینی.به ترتیب نمایشی("abc سلام"، حروف‌چینی.جهت متن خودکار)
    cps := حروف‌چینی.کدهای نمایشی("لا"، حروف‌چینی.جهت متن راست به چپ، درست)
    سرچاپ cps.طول()، cps.بگیر(0)
    cps.آزادکن()
    حروف‌چینی.آزادسازی قلم(f)
پایان
خروجی444 15 871 0 0 453 13 1040 0 0 356 11 465 0 0 456 9 764 0 0 382 7 1344 0 0 3 4 0 0 0 883 2 1069 0 0 445 0 836 0 0 ﺳﻼﻡ true true abc ﻡﻼﺳ 1 65275

چینش متن TextAlign

جداشمار چینش متن
جای خط‌ها در جعبه، مثل text-align در CSS.
نامانگلیسیگونهتوضیح
آغازStartدر سمت آغاز جهت بند.
انتهاEndدر سمت پایان.
چپLeftچپ.
راستRightراست.
وسطCenterوسط.
تمام‌چینJustifyفاصله‌ها کش می‌آیند تا خط‌ها پهنا را پر کنند، جز خط آخر.
gui-typeset-Layout.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده

تابع ریشه:
    fonts := مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/")
    ناپایا fc := حروف‌چینی.مجموعه قلم تازه()
    حروف‌چینی.افزودن پرونده قلم(fc، fonts + "XB Zar.ttf")
    حروف‌چینی.افزودن پرونده قلم(fc، fonts + "DejaVuSansMono.ttf")
    ناپایا spans := وکتور {} برگردان وکتور<حروف‌چینی.تکه متن>
    spans.بیفزا(حروف‌چینی.تکه متن { متن = "قیمت این کتاب "، خانواده‌های قلم = "XB Zar"، اندازه = 18.0، برچسب = 1، زبان = "fa" })
    spans.بیفزا(حروف‌چینی.تکه متن { متن = "12 USD"، خانواده‌های قلم = "DejaVu Sans Mono"، اندازه = 14.0، برچسب = 2، فاصله حرف‌ها = 0.5 })
    spans.بیفزا(حروف‌چینی.تکه متن { متن = " است."، خانواده‌های قلم = "XB Zar"، اندازه = 18.0، برچسب = 3، فاصله واژه‌ها = 2.0، بلندی خط = 30.0، ضریب بلندی خط = 0.0 })
    ناپایا st := حروف‌چینی.سبک بند {}
    st.چینش = حروف‌چینی.چینش متن.Justify
    st.جهت = حروف‌چینی.جهت متن خودکار
    st.فاصله‌های سفید = حروف‌چینی.فاصله سفید.Normal
    st.شکستن سرریز = حروف‌چینی.شکستن سرریز.BreakWord
    st.بیشینه خط‌ها = 3
    st.سه نقطه = درست
    st.زبان = "fa"
    ناپایا p := حروف‌چینی.بند تازه(fc، spans، st)
    سرچاپ حروف‌چینی.پهنای کمینه محتوا(p)، حروف‌چینی.پهنای بیشینه محتوا(p)، p.کمینه محتوا، p.بیشینه محتوا
    سرچاپ p.متن، p.سبک.بیشینه خط‌ها، p.تکه‌ها.طول()، p.آغاز تکه‌ها.بگیر(1)، حروف‌چینی.تکه جای(p، 30)
    c := p.نویسه‌ها.بگیر(0)
    سرچاپ c.جابجایی، c.کد نویسه، c.تکه، c.تراز، c.تراز پایه، c.پرچم‌ها، c.پیشروی، c.شکست، c.چهره
    r := p.دنباله‌ها.بگیر(0)
    سرچاپ r.آغاز نویسه، r.انتهای نویسه، r.آغاز گلیف، r.انتهای گلیف، r.تراز، r.چهره، r.تکه، r.اندازه شصت‌وچهارم
    g := p.گلیف‌ها.بگیر(0)
    سرچاپ g.شناسه، g.نویسه، g.پیشروی، g.جابجایی افقی، g.جابجایی عمودی
    ناپایا l := حروف‌چینی.چیدن بند(p، fc، 110.0)
    سرچاپ l.پهنا، l.بلندی، l.بیشینه پهنا، l.بریده‌شده، l.خط‌ها.طول()
    هر lb در l.خط‌ها:
        سرچاپ lb.آغاز، lb.انتهای بایت، lb.آغاز نویسه، lb.انتهای نویسه، lb.آغاز فاصله پایانی، lb.بالا، lb.خط پایه، lb.بلندی، lb.صعود، lb.نزول، lb.ایکس، lb.پهنا، lb.آغاز دنباله، lb.شمار دنباله، lb.شکست سخت، lb.راست به چپ، lb.فاصله افزوده
    پایان
    هر run در l.دنباله‌ها:
        سرچاپ run.چهره، run.اندازه، run.ایکس، run.پهنا، run.آغاز، run.انتهای بایت، run.آغاز نویسه، run.انتهای نویسه، run.راست به چپ، run.تراز، run.برچسب، run.تکه، run.آغاز گلیف، run.شمار گلیف، run.سه نقطه
    پایان
    pg := l.گلیف‌ها.بگیر(0)
    سرچاپ pg.شناسه، pg.ایکس، pg.ایگرگ، pg.خوشه، pg.پیشروی
    حروف‌چینی.آزادسازی چیدمان(l)
    حروف‌چینی.آزادسازی بند(p)
    spans.آزادکن()
    حروف‌چینی.آزادسازی مجموعه قلم(fc)
پایان
خروجی34.828125 197.453125 2229 12637 قیمت این کتاب 12 USD است. 3 3 25 1 0 1602 0 1 1 20 417 0 0 0 14 0 14 1 0 0 1152 433 0 417 0 0 110 58.640625 110 false 2 0 25 0 14 13 0 18.453125 27.25 18.453125 8.796875 0 110 0 2 false true 417 25 39 14 25 25 27.25 48.46875 31.390625 21.21875 10.171875 14.3125 95.6875 2 5 false true 0 0 18 0 0 24 25 13 14 true 1 1 0 0 0 false 0 18 0 110 0 24 0 13 true 1 1 0 0 13 false 0 18 14.3125 34.453125 32 39 21 25 true 1 3 2 13 4 false 1 18 48.765625 12.84375 31 32 20 21 true 1 3 2 17 1 false 1 14 61.609375 26.765625 28 31 17 20 false 2 2 1 18 3 false 0 14 88.375 4.21875 27 28 16 17 true 1 2 1 21 1 false 0 14 92.59375 17.40625 25 27 14 16 false 2 2 1 22 2 false 358 0 18.453125 22 15.5625

فاصله سفید WhiteSpace

جداشمار فاصله سفید
رفتار با فاصله و خط تازه، مثل white-space در CSS.
نامانگلیسیگونهتوضیح
معمولیNormalفاصله‌ها یکی می‌شوند، خط تازه فاصله است و خط‌ها می‌شکنند.
بی شکستنNoWrapمثل معمولی ولی خط‌ها نمی‌شکنند.
پیش‌قالبPreفاصله‌ها و خط تازه می‌مانند و شکستن نیست.
پیش‌قالب با شکستنPreWrapفاصله‌ها و خط تازه می‌مانند و خط‌ها می‌شکنند؛ فاصله‌های پایانی آویزان می‌مانند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

شکستن سرریز OverflowWrap

جداشمار شکستن سرریز
آیا واژه‌ی بلندتر از خط شکسته شود، مثل overflow-wrap در CSS.
نامانگلیسیگونهتوضیح
عادیNormalواژه‌های بلند بیرون می‌زنند.
هرجاAnywhereشکستن در هر حرف؛ کمینه‌ی محتوا تک‌حرف‌ها را می‌شمارد.
شکستن واژهBreakWordشکستن فقط در صورت نیاز؛ کمینه‌ی محتوا واژه‌ی کامل را نگه می‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

تکه متن TextSpan

ساختار تکه متن
تکه‌ای متن با یک سبک.
نامانگلیسیگونهتوضیح
متنtextرشته = ""متن به UTF-8.
خانواده‌های قلمfamiliesرشته = "sans-serif"فهرست خانواده‌ها مثل font-family در CSS، مثلا "Vazirmatn, sans-serif".
اندازهsizeاعشار۶۴ = 16اندازه‌ی قلم به پیکسل.
وزنweightصحیح = 400وزن قلم؛ ۴۰۰ معمولی.
موربitalicمنطقی = نادرستچهره‌ی مورب خواسته شود.
فاصله حرف‌هاletter_spacingاعشار۶۴ = 0پیکسل افزوده پس از هر حرف؛ ترکیب‌های اختیاری را خاموش می‌کند.
فاصله واژه‌هاword_spacingاعشار۶۴ = 0پیکسل افزوده پس از هر فاصله.
بلندی خطline_heightاعشار۶۴ = 0بلندی خط به پیکسل؛ ۰ یعنی معمولی.
ضریب بلندی خطline_height_scaleاعشار۶۴ = 0بلندی خط به صورت ضریبی از اندازه‌ی قلم، وقتی line_height صفر است.
برچسبtagصحیح = 0عدد دلخواه شما که در هر دنباله‌ی گلیف می‌آید تا دنباله‌ها را به عنصرها برگردانید.
زبانlangرشته = ""زبان مثل fa برای انتخاب قاعده‌های زبانی قلم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

سبک بند ParagraphStyle

ساختار سبک بند
تنظیم‌های کل بند.
نامانگلیسیگونهتوضیح
چینشalignچینش متنچینش خط‌ها.
جهتdirectionصحیح = 0جهت پایه: TextDirAuto، TextDirLTR یا TextDirRTL.
فاصله‌های سفیدwhite_spaceفاصله سفیدرفتار با فاصله.
شکستن سرریزoverflow_wrapشکستن سرریزرفتار با واژه‌ی بلند.
بیشینه خط‌هاmax_linesصحیح = 0بیشینه‌ی شمار خط‌ها؛ ۰ یعنی بی‌حد.
سه نقطهellipsisمنطقی = نادرستمتن بیرون‌زده یا پنهان را با سه نقطه در سمت پایان کوتاه کند.
زبانlangرشته = ""زبان برای تکه‌هایی که زبان ندارند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

داده نویسه CharInfo

ساختار داده نویسه
داده‌ی بند درباره‌ی یک نویسه.
نامانگلیسیگونهتوضیح
جابجاییoffsetصحیح = 0جای بایت UTF-8 در متن بند.
کد نویسهcpصحیح = 0نقطه‌کد.
تکهspanصحیح = 0تکه‌ای که به آن تعلق دارد.
ترازlevelصحیح = 0تراز دوسویه؛ فرد یعنی راست‌به‌چپ.
تراز پایهbaseصحیح = 0تراز بند دوسویه‌ای که در آن است.
پرچم‌هاflagsصحیح = 0بیت‌های درونی: پنهان، شکست سخت، آغاز خوشه، فاصله، حرف واژه.
پیشرویadvanceصحیح = 0سهم آن از پهنای شکل‌یافته، به یک شصت‌وچهارم پیکسل.
شکستbrkصحیح = 0شکست خط پیش از آن: ۰ نه، ۱ مجاز، ۲ لازم.
چهرهfaceصحیح = -1چهره‌ی انتخاب‌شده برای آن در مجموعه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

دنباله شکل‌یافته ShapedRun

ساختار دنباله شکل‌یافته
نویسه‌هایی که با هم شکل گرفتند: یک تکه، چهره، خط و تراز دوسویه.
نامانگلیسیگونهتوضیح
آغاز نویسهcp_startصحیح = 0اندیس نخستین نویسه.
انتهای نویسهcp_endصحیح = 0یکی پس از اندیس آخرین نویسه.
آغاز گلیفglyph_startصحیح = 0نخستین گلیف در گلیف‌های بند.
انتهای گلیفglyph_endصحیح = 0یکی پس از آخرین گلیف آن.
ترازlevelصحیح = 0تراز دوسویه‌ی آن.
چهرهfaceصحیح = -1چهره‌ی آن.
تکهspanصحیح = 0تکه‌ی آن.
اندازه شصت‌وچهارمsize64صحیح = 0اندازه‌ی قلم به یک شصت‌وچهارم پیکسل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

گلیف بند ParagraphGlyph

ساختار گلیف بند
گلیف شکل‌یافته به ترتیب منطقی، به یک شصت‌وچهارم پیکسل.
نامانگلیسیگونهتوضیح
شناسهidصحیح = 0شماره‌ی گلیف.
نویسهcpصحیح = 0اندیس نویسه‌ی خوشه‌ی آن.
پیشرویadvanceصحیح = 0پیشروی با فاصله‌ی حرف و واژه.
جابجایی افقیx_offsetصحیح = 0جابجایی افقی.
جابجایی عمودیy_offsetصحیح = 0جابجایی عمودی؛ رو به بالا مثبت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

بند Paragraph

ساختار بند
متن سبک‌دار پس از بخش‌بندی و شکل‌دهی؛ در هر پهنایی بی شکل‌دهی دوباره چیده می‌شود.
نامانگلیسیگونهتوضیح
متنtextرشته = ""متن همه‌ی تکه‌ها پشت سر هم؛ جای‌ها به آن اشاره دارند.
سبکstyleسبک بندسبک بند.
تکه‌هاspansوکتور<تکه متن>تکه‌ها.
آغاز تکه‌هاspan_startsوکتور<صحیح>جای بایت آغاز هر تکه.
نویسه‌هاcharsوکتور<داده نویسه>یک خانه برای هر نقطه‌کد.
دنباله‌هاrunsوکتور<دنباله شکل‌یافته>دنباله‌های شکل‌یافته به ترتیب منطقی.
گلیف‌هاglyphsوکتور<گلیف بند>همه‌ی گلیف‌های شکل‌یافته.
کمینه محتواmin_contentصحیح = 0پهنای کمینه‌ی محتوا به یک شصت‌وچهارم پیکسل.
بیشینه محتواmax_contentصحیح = 0پهنای بیشینه‌ی محتوا به یک شصت‌وچهارم پیکسل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

گلیف جایگذاری‌شده PlacedGlyph

ساختار گلیف جایگذاری‌شده
گلیف آماده‌ی رسم.
نامانگلیسیگونهتوضیح
شناسهidصحیح = 0شماره‌ی گلیف.
ایکسxاعشار۶۴ = 0جای افقی قلم گلیف به پیکسل.
ایگرگyاعشار۶۴ = 0جای عمودی خط پایه با جابجایی گلیف، به پیکسل.
خوشهclusterصحیح = 0جای بایت متنی که نشان می‌دهد.
پیشرویadvanceاعشار۶۴ = 0پیشروی آن به پیکسل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

دنباله گلیف GlyphRun

ساختار دنباله گلیف
گلیف‌های یک قلم و یک جهت در یک خط، به ترتیب نمایش.
نامانگلیسیگونهتوضیح
چهرهfaceصحیح = -1چهره‌ای که با آن رسم می‌شود.
اندازهsizeاعشار۶۴ = 0اندازه‌ی قلم به پیکسل.
ایکسxاعشار۶۴ = 0لبه‌ی چپ به پیکسل.
پهناwidthاعشار۶۴ = 0پهنا به پیکسل.
آغازstartصحیح = 0نخستین جای بایت.
انتهای بایتendصحیح = 0یکی پس از آخرین جای بایت.
آغاز نویسهcp_startصحیح = 0اندیس نخستین نویسه.
انتهای نویسهcp_endصحیح = 0یکی پس از اندیس آخرین نویسه.
راست به چپrtlمنطقی = نادرستدنباله راست‌به‌چپ است.
ترازlevelصحیح = 0تراز دوسویه.
برچسبtagصحیح = 0برچسب تکه‌ی آن.
تکهspanصحیح = 0تکه‌ی آن.
آغاز گلیفglyph_startصحیح = 0نخستین گلیف در گلیف‌های چیدمان.
شمار گلیفglyph_countصحیح = 0شمار گلیف‌ها.
سه نقطهellipsisمنطقی = نادرستاین دنباله سه نقطه‌ی پایان خط بریده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

جعبه خط LineBox

ساختار جعبه خط
یک خط از چیدمان.
نامانگلیسیگونهتوضیح
آغازstartصحیح = 0نخستین جای بایت.
انتهای بایتendصحیح = 0یکی پس از آخرین جای بایت، با فاصله‌های پایانی.
آغاز نویسهcp_startصحیح = 0اندیس نخستین نویسه.
انتهای نویسهcp_endصحیح = 0یکی پس از اندیس آخرین نویسه.
آغاز فاصله پایانیtrailing_cpصحیح = 0جای آغاز فاصله‌های پایانی.
بالاtopاعشار۶۴ = 0بالای خط به پیکسل.
خط پایهbaselineاعشار۶۴ = 0خط پایه به پیکسل.
بلندیheightاعشار۶۴ = 0بلندی خط به پیکسل.
صعودascentاعشار۶۴ = 0فضای بالای خط پایه، با نیمی از فاصله‌ی سطر.
نزولdescentاعشار۶۴ = 0فضای زیر خط پایه، با نیمی از فاصله‌ی سطر.
ایکسxاعشار۶۴ = 0لبه‌ی چپ محتوا پس از چینش.
پهناwidthاعشار۶۴ = 0پهنای محتوا بدون فاصله‌های آویزان.
آغاز دنبالهrun_startصحیح = 0نخستین دنباله در دنباله‌های چیدمان.
شمار دنبالهrun_countصحیح = 0شمار دنباله‌ها به ترتیب نمایش.
شکست سختhard_breakمنطقی = نادرستخط با نویسه‌ی خط تازه پایان می‌یابد.
راست به چپrtlمنطقی = نادرستجهت بند در این خط راست‌به‌چپ است.
فاصله افزودهspace_extraصحیح = 0پهنای افزوده‌ی هر فاصله از تمام‌چین، به یک شصت‌وچهارم پیکسل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

چیدمان متن TextLayout

ساختار چیدمان متن
خط‌ها و گلیف‌های جایگذاری‌شده‌ی بند در یک پهنا.
نامانگلیسیگونهتوضیح
خط‌هاlinesوکتور<جعبه خط>خط‌ها.
دنباله‌هاrunsوکتور<دنباله گلیف>دنباله‌های گلیف همه‌ی خط‌ها.
گلیف‌هاglyphsوکتور<گلیف جایگذاری‌شده>همه‌ی گلیف‌ها.
پهناwidthاعشار۶۴ = 0پهنا: بیشینه‌ی پهنا، یا پهن‌ترین خط اگر نبود.
بلندیheightاعشار۶۴ = 0بلندی کل.
بیشینه پهناmax_widthاعشار۶۴ = 0پهنای خواسته‌شده.
بریده‌شدهtruncatedمنطقی = نادرستخط‌هایی حذف یا بریده شدند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

جای متن TextPosition

ساختار جای متن
جای نشانگر: جای بایت و این‌که به کدام سو چسبیده است.
نامانگلیسیگونهتوضیح
جابجاییoffsetصحیح = 0جای بایت در متن بند.
وابسته به پیشupstreamمنطقی = نادرستبه متن پیش از خود می‌چسبد، مثل پایان خط شکسته.
خطlineصحیح = 0خطی که آزمون برخورد یا جابجایی یافت.
gui-typeset-Editing.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده

تابع ریشه:
    ناپایا fc := حروف‌چینی.مجموعه قلم تازه()
    حروف‌چینی.افزودن پرونده قلم(fc، مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/XB Zar.ttf"))
    ناپایا spans := وکتور {} برگردان وکتور<حروف‌چینی.تکه متن>
    spans.بیفزا(حروف‌چینی.تکه متن { متن = "نام Salam است"، خانواده‌های قلم = "XB Zar"، اندازه = 20.0 })
    ناپایا st := حروف‌چینی.سبک بند {}
    st.فاصله‌های سفید = حروف‌چینی.فاصله سفید.PreWrap
    ناپایا p := حروف‌چینی.بند تازه(fc، spans، st)
    ناپایا l := حروف‌چینی.چیدن بند(p، fc، 0.0)
    hit := حروف‌چینی.آزمون برخورد(p، l، 40.0، 10.0)
    سرچاپ hit.جابجایی، hit.وابسته به پیش، hit.خط
    caret := حروف‌چینی.مستطیل نشانگر(p، l، hit)
    سرچاپ caret.ایکس، caret.ایگرگ، caret.پهنا، caret.بلندی
    rects := حروف‌چینی.مستطیل‌های گزینش(p، l، 3، 12)
    هر r در rects:
        سرچاپ r.ایکس، r.پهنا
    پایان
    rects.آزادکن()
    سرچاپ حروف‌چینی.خوشه بعدی(p، 0)، حروف‌چینی.خوشه پیشین(p، 4)، حروف‌چینی.انتهای واژه بعدی(p، 0)، حروف‌چینی.آغاز واژه پیشین(p، 12)
    ناپایا pos := حروف‌چینی.جای متن { جابجایی = 0 }
    تکرار 4:
        pos = حروف‌چینی.جابجایی دیداری(p، l، pos، نادرست)
        چاپ pos.جابجایی، " "
    پایان
    سرچاپ ""
    حروف‌چینی.آزادسازی چیدمان(l)
    حروف‌چینی.آزادسازی بند(p)
    spans.آزادکن()
    حروف‌چینی.آزادسازی مجموعه قلم(fc)
پایان
خروجی7 false 0 37.59375 0 0 30.28125 37.59375 67.765625 2 2 6 7 2 4 6 7

مستطیل متن TextRect

ساختار مستطیل متن
مستطیلی به پیکسل.
نامانگلیسیگونهتوضیح
ایکسxاعشار۶۴ = 0چپ.
ایگرگyاعشار۶۴ = 0بالا.
پهناwidthاعشار۶۴ = 0پهنا.
بلندیheightاعشار۶۴ = 0بلندی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

ماسک گلیف GlyphMask

ساختار ماسک گلیف
ماسک پوشش ۸ بیتی یک گلیف، سطر به سطر.
نامانگلیسیگونهتوضیح
دادهdataتهی*بایت‌های پوشش؛ ۰ خالی و ۲۵۵ پر.
پهناwidthصحیح = 0پهنا به پیکسل.
بلندیheightصحیح = 0بلندی به پیکسل.
گام سطرstrideصحیح = 0بایت‌های هر سطر.
چپleftصحیح = 0ستون‌ها از جای قلم تا لبه‌ی چپ.
بالاtopصحیح = 0سطرها از لبه‌ی بالا تا خط پایه.
gui-typeset-Raster.salam
// زبان: فارسی
واردسازی رابط گرافیکی.حروف‌چینی
واردسازی سیستم عامل
واردسازی مسیر پرونده

تابع ریشه:
    ناپایا ok := نادرست
    ناپایا f := حروف‌چینی.بارگذاری قلم(مسیر پرونده.پیوند(مسیر پرونده.پوشه(سیستم عامل.متغیر محیطی("SALAM_STD"))، "books/fonts/XB Zar.ttf")، ok)
    gid := حروف‌چینی.اندیس نویسه(f، 0x0634)
    ناپایا m := حروف‌چینی.شطرنجی کردن گلیف(f، gid، 24.0، حروف‌چینی.زیرپیکسل(12.25))
    سرچاپ m.پهنا، m.بلندی، m.گام سطر، m.چپ، m.بالا، حروف‌چینی.درهم ماسک گلیف(m)
    سرچاپ حروف‌چینی.مبدا افقی گلیف(12.25، m)، حروف‌چینی.مبدا عمودی گلیف(30.0، m)
    bp := m.داده برگردان طبیعی۸*
    تکرار m.بلندی در y:
        تکرار m.پهنا در x:
            چاپ bp[y * m.گام سطر + x] بزرگتر (127 برگردان طبیعی۸) ? "#" : "."
        پایان
        سرچاپ ""
    پایان
    حروف‌چینی.آزادسازی ماسک گلیف(m)
    ناپایا cache := حروف‌چینی.نهانگاه گلیف تازه(65536)
    a := حروف‌چینی.گلیف نهان(cache، f، gid، 24.0، 12.25)
    b := حروف‌چینی.گلیف نهان(cache، f، gid، 24.0، 40.25)
    سرچاپ a.پهنا برابر b.پهنا، cache.برخوردها، cache.نیافته‌ها، cache.گنجایش، cache.بایت‌ها بزرگتر 0، cache.ساعت، cache.خانه‌ها.طول()، cache.فهرست.اندازه()
    slot := cache.خانه‌ها.بگیر(0)
    سرچاپ slot.کلید بزرگتر (0 برگردان صحیح۶۴)، slot.ماسک.پهنا، slot.مهر زمان، slot.اشغال
    حروف‌چینی.آزادسازی نهانگاه گلیف(cache)
    ناپایا o := حروف‌چینی.طرح تبدیل‌شده(f، gid، 0.01، 0.0، 0.0، -0.01، 2.0، 20.0)
    pt := o.نقطه‌ها.بگیر(0)
    سرچاپ o.نقطه‌ها.طول()، o.پایان‌های کانتور.طول()، pt.روی منحنی
    ناپایا cov := حروف‌چینی.پوشش طرح(o، 64، 64)
    سرچاپ cov.ایکس، cov.ایگرگ، cov.پهنا، cov.بلندی، cov.مقدارها.طول()
    حروف‌چینی.آزادسازی سطرهای پوشش(cov)
    حروف‌چینی.آزادسازی طرح(o)
    حروف‌چینی.آزادسازی قلم(f)
پایان
خروجی21 22 21 0 16 -7638933673195106609 12 14 ...............#..... ...............##.... ..................... ...............#.##.. ..............#####.. ...............#..... ..................... ..................... ..................... ...................## ................##.## ...........#...###### ..........##########. ...........####...... ...........#......... ...........#......... #..........#......... #.................... ##........#.......... ####....##........... .########............ ..#####.............. true 1 1 65536 true 2 1 1 true 21 2 true 115 3 true 1 6 19 20 380

خانه نهانگاه CacheSlot

ساختار خانه نهانگاه
یک خانه از نهانگاه گلیف.
نامانگلیسیگونهتوضیح
کلیدkeyصحیح۶۴ = 0قلم، اندازه، گلیف و یک چهارم پیکسل در یک عدد.
ماسکmaskماسک گلیفماسک نهان.
مهر زمانstampصحیح۶۴ = 0آخرین زمان استفاده.
اشغالusedمنطقی = نادرستخانه ماسکی دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

نهانگاه گلیف GlyphCache

ساختار نهانگاه گلیف
نهانگاه ماسک گلیف که کم‌استفاده‌ترین را بیرون می‌کند و اندازه‌اش به بایت محدود است.
نامانگلیسیگونهتوضیح
گنجایشcapacityصحیح = 1048576بودجه‌ی بایت.
بایت‌هاbytesصحیح = 0بایت‌های در استفاده.
برخوردهاhitsصحیح = 0جست‌وجوهایی که از نهانگاه پاسخ گرفتند.
نیافته‌هاmissesصحیح = 0جست‌وجوهایی که شطرنجی کردن لازم داشتند.
ساعتclockصحیح۶۴ = 0شمارنده برای ترتیب کم‌استفاده‌ترین.
خانه‌هاslotsوکتور<خانه نهانگاه>خانه‌ها.
فهرستindexنگاشت<صحیح۶۴، صحیح>از کلید به خانه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

متریک قلم FontMetrics

ساختار متریک قلم
متریک‌های عمودی قلم به واحد قلم.
نامانگلیسیگونهتوضیح
واحد امunits_per_emصحیح = 0شمار واحدها در یک ام.
صعودascentصحیح = 0فاصله از خط پایه تا بالای سطر؛ مثبت.
نزولdescentصحیح = 0فاصله از خط پایه تا پایین سطر؛ مثبت.
فاصله سطرهاline_gapصحیح = 0فاصله‌ی افزوده میان سطرها.
ارتفاع ایکسx_heightصحیح = 0بلندی حرف کوچک x.
ارتفاع حرف بزرگcap_heightصحیح = 0بلندی حرف بزرگ.
جای زیرخطunderline_positionصحیح = 0جای زیرخط؛ منفی یعنی زیر خط پایه.
ضخامت زیرخطunderline_thicknessصحیح = 0ضخامت زیرخط.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

نقطه طرح OutlinePoint

ساختار نقطه طرح
یک نقطه از طرح گلیف.
نامانگلیسیگونهتوضیح
ایکسxاعشار۶۴ = 0جای افقی.
ایگرگyاعشار۶۴ = 0جای عمودی.
روی منحنیonمنطقی = نادرستنقطه روی منحنی است نه نقطه‌ی کنترل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

طرح نویسه GlyphOutline

ساختار طرح نویسه
نقطه‌ها و کانتورهای یک گلیف.
نامانگلیسیگونهتوضیح
نقطه‌هاpointsوکتور<نقطه طرح>همه‌ی نقطه‌ها، کانتور پس از کانتور.
پایان‌های کانتورendsوکتور<صحیح>جای پایان هر کانتور در نقطه‌ها (یکی پس از آخرین نقطه).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

قلم Font

ساختار قلم
قلم TrueType در حافظه، با جای جدول‌هایش.
نامانگلیسیگونهتوضیح
دادهdataتهی*بایت‌های پرونده‌ی قلم که مال خود قلم است.
اندازهsizeصحیح = 0شمار بایت‌های داده.
واحد امunits_per_emصحیح = 0شمار واحدهای قلم در یک ام، از جدول head.
شمار گلیف‌هاnum_glyphsصحیح = 0شمار گلیف‌ها.
صعودascentصحیح = 0صعود از جدول hhea، به واحد قلم.
نزولdescentصحیح = 0نزول از جدول hhea، منفی و به واحد قلم.
فاصله سطرهاline_gapصحیح = 0فاصله‌ی سطرها از جدول hhea.
جدول گلیفglyfصحیح = 0جای آغاز جدول glyf.
طول جدول گلیفglyf_lenصحیح = 0طول جدول glyf.
جدول مکانlocaصحیح = 0جای آغاز جدول loca.
طول جدول مکانloca_lenصحیح = 0طول جدول loca.
جدول متریک افقیhmtxصحیح = 0جای آغاز جدول hmtx.
جدول فاصله جفت‌هاkernصحیح = 0جای جدول قدیمی kern؛ اگر نباشد ۰.
زیرجدول نگاشت نویسهcmap_subصحیح = 0جای زیرجدول cmap انتخاب‌شده.
نگاشت نمادینcmap_symbolمنطقی = نادرستcmap از نوع نمادین ویندوز است.
شمار متریک‌های افقیnum_hmetricsصحیح = 0شمار متریک‌های افقی.
مکان بلندloca_longمنطقی = نادرستجدول loca جای‌های ۳۲ بیتی دارد.
معتبرokمنطقی = نادرستقلم درست خوانده شد.
شناسهidصحیح = 0شماره‌ای یکتا برای این قلم بارشده که کلید نهانگاه است.
اندیس چهرهindexصحیح = 0شماره‌ی چهره در مجموعه‌ی TTC.
جدول سرheadصحیح = 0جای جدول head.
جدول سر افقیhheaصحیح = 0جای جدول hhea.
جدول او اس دوos2صحیح = 0جای جدول OS/2؛ اگر نباشد ۰.
جدول نامnameصحیح = 0جای جدول name.
جدول پستpostصحیح = 0جای جدول post.
جدول جایگزینیgsubصحیح = 0جای جدول GSUB؛ اگر نباشد ۰.
جدول جایگذاریgposصحیح = 0جای جدول GPOS؛ اگر نباشد ۰.
جدول تعریف گلیفgdefصحیح = 0جای جدول GDEF؛ اگر نباشد ۰.
طول جدول فاصله جفت‌هاkern_lenصحیح = 0طول جدول kern.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

سطرهای پوشش CoverageRows

ساختار سطرهای پوشش
پوشش اعشاری یک طرح، سطر به سطر.
نامانگلیسیگونهتوضیح
ایکسxصحیح = 0ستون چپ.
ایگرگyصحیح = 0سطر بالا.
پهناwidthصحیح = 0پهنا به پیکسل.
بلندیheightصحیح = 0بلندی به پیکسل.
مقدارهاvaluesوکتور<اعشار۶۴>پوشش از ۰ تا ۱، به شمار پهنا در هر سطر.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

پایاها و متغیرها

جهت متن خودکار TextDirAuto

پایا جهت متن خودکار: صحیح۳۲ = 0
جهت از نخستین حرف قوی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

جهت متن چپ به راست TextDirLTR

پایا جهت متن چپ به راست: صحیح۳۲ = 1
چپ به راست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

جهت متن راست به چپ TextDirRTL

پایا جهت متن راست به چپ: صحیح۳۲ = 2
راست به چپ.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

تابع‌ها

مجموعه قلم تازه NewFontCollection

تابع مجموعه قلم تازه(): مجموعه قلم
مجموعه‌ای خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

افزودن قلم AddFont

تابع افزودن قلم(fc &: مجموعه قلم، f: قلم): صحیح
قلم بارشده را می‌افزاید و مجموعه مالک آن می‌شود؛ شماره‌ی چهره را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

افزودن قلم از بایت‌ها AddFontBytes

تابع افزودن قلم از بایت‌ها(fc &: مجموعه قلم، p: تهی*، n: صحیح): صحیح
همه‌ی چهره‌های بایت‌های قلم را می‌افزاید؛ شمارشان را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

افزودن پرونده قلم AddFontFile

تابع افزودن پرونده قلم(fc &: مجموعه قلم، path: رشته): صحیح
همه‌ی چهره‌های یک پرونده را می‌افزاید و اکنون فقط نام‌ها را می‌خواند؛ شمارشان را برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

پوشه‌های قلم سیستم SystemFontDirs

تابع پوشه‌های قلم سیستم(): وکتور<رشته>
پوشه‌های استاندارد قلم در این سیستم‌عامل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

افزودن پوشه قلم AddFontDir

تابع افزودن پوشه قلم(fc &: مجموعه قلم، dir: رشته): صحیح
همه‌ی پرونده‌های TrueType زیر یک پوشه را به ترتیب مرتب می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

افزودن قلم‌های سیستم AddSystemFonts

تابع افزودن قلم‌های سیستم(fc &: مجموعه قلم): صحیح
قلم‌های پوشه‌های استاندارد لینوکس، ویندوز یا مک را بدون fontconfig می‌افزاید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

شمار چهره‌های مجموعه FaceCountIn

تابع شمار چهره‌های مجموعه(fc: مجموعه قلم): صحیح
شمار چهره‌های مجموعه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

قلم چهره FaceFont

تابع قلم چهره(fc &: مجموعه قلم، face: صحیح): قلم
قلم یک چهره و بارگذاری آن در صورت نیاز.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

یافتن چهره FindFace

تابع یافتن چهره(fc &: مجموعه قلم، family: رشته، weight: صحیح، italic: منطقی): صحیح
بهترین چهره‌ی یک خانواده برای وزن و مورب بودن، یا ۱-.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

چهره برای نویسه FaceForCodepoint

تابع چهره برای نویسه(fc &: مجموعه قلم، families: رشته، weight: صحیح، italic: منطقی، cp: صحیح): صحیح
چهره‌ای که نویسه با آن کشیده می‌شود: نخست فهرست خانواده‌ها مثل CSS، سپس فهرست جایگزین خط آن و سپس هر چهره‌ای که آن را دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

آزادسازی مجموعه قلم FreeFontCollection

تابع آزادسازی مجموعه قلم(fc &: مجموعه قلم)
مجموعه و قلم‌هایش را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

شکل‌دهی متن ShapeText

تابع شکل‌دهی متن(f: قلم، text: رشته، rtl: منطقی، script: رشته، lang: رشته): وکتور<گلیف شکل‌یافته>
یک تکه متن را با GSUB و GPOS قلم شکل می‌دهد (شکل‌های پیوسته، ترکیب‌ها، فاصله‌گذاری، اعراب)؛ تکه‌های راست‌به‌چپ مثل HarfBuzz به ترتیب نمایش برمی‌گردند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

بند تازه NewParagraph

تابع بند تازه(fc &: مجموعه قلم، spans: وکتور<تکه متن>، style: سبک بند): بند
تکه‌ها را به دنباله‌های دوسویه، خط و قلم بخش می‌کند، برای هر خوشه قلم برمی‌گزیند و هر دنباله را یک بار شکل می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

پهنای کمینه محتوا MinContentWidth

تابع پهنای کمینه محتوا(p: بند): اعشار۶۴
کمترین پهنایی که بند در آن جا می‌شود، به پیکسل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

پهنای بیشینه محتوا MaxContentWidth

تابع پهنای بیشینه محتوا(p: بند): اعشار۶۴
پهنا بدون هیچ شکستن.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

تکه جای SpanAt

تابع تکه جای(p: بند، offset: صحیح): صحیح
تکه‌ای که یک جای بایت در آن است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

آزادسازی بند FreeParagraph

تابع آزادسازی بند(p &: بند)
بند را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

چیدن بند LayoutParagraph

تابع چیدن بند(p &: بند، fc &: مجموعه قلم، max_width: اعشار۶۴): چیدمان متن
خط‌ها را در یک پهنا می‌شکند (۰ یعنی بی‌حد)، هر خط را برای دوسویه می‌چیند، تراز می‌کند و گلیف‌ها را جای می‌دهد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

آزادسازی چیدمان FreeLayout

تابع آزادسازی چیدمان(l &: چیدمان متن)
چیدمان را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Layout.salam

آزمون برخورد HitTest

تابع آزمون برخورد(p: بند، l: چیدمان متن، x: اعشار۶۴، y: اعشار۶۴): جای متن
نزدیک‌ترین جای نشانگر به یک نقطه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

مستطیل نشانگر CaretRect

تابع مستطیل نشانگر(p: بند، l: چیدمان متن، pos: جای متن): مستطیل متن
جای رسم نشانگر برای یک جای متن؛ پهنای ۰ و به بلندی خط.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

مستطیل‌های گزینش SelectionRects

تابع مستطیل‌های گزینش(p: بند، l: چیدمان متن، from: صحیح، to_offset: صحیح): وکتور<مستطیل متن>
مستطیل‌های پوشاننده‌ی یک بازه‌ی بایت، که در مرز دنباله‌های دوسویه جدا می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

خوشه بعدی NextGrapheme

تابع خوشه بعدی(p: بند، offset: صحیح): صحیح
مرز خوشه‌ی نویسه‌ی بعدی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

خوشه پیشین PrevGrapheme

تابع خوشه پیشین(p: بند، offset: صحیح): صحیح
مرز خوشه‌ی نویسه‌ی پیشین.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

انتهای واژه بعدی NextWordEnd

تابع انتهای واژه بعدی(p: بند، offset: صحیح): صحیح
پایان واژه‌ی بعدی؛ نیم‌فاصله درون واژه می‌ماند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

آغاز واژه پیشین PrevWordStart

تابع آغاز واژه پیشین(p: بند، offset: صحیح): صحیح
آغاز واژه‌ی پیشین.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

جابجایی دیداری MoveVisual

تابع جابجایی دیداری(p: بند، l: چیدمان متن، pos: جای متن، right: منطقی): جای متن
نشانگر را یک خوشه به چپ یا راست صفحه می‌برد، از روی دنباله‌های دوسویه و خط‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Editing.salam

ضریب مقیاس ScaleFactor

تابع ضریب مقیاس(f: قلم، size: اعشار۶۴): اعشار۶۴
پیکسل برای هر واحد قلم در یک اندازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

صعود پیکسلی AscentPixels

تابع صعود پیکسلی(f: قلم، size: اعشار۶۴): اعشار۶۴
صعود به پیکسل در یک اندازه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

نزول پیکسلی DescentPixels

تابع نزول پیکسلی(f: قلم، size: اعشار۶۴): اعشار۶۴
نزول به پیکسل در یک اندازه؛ منفی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

ارتفاع خط پیکسلی LineHeightPixels

تابع ارتفاع خط پیکسلی(f: قلم، size: اعشار۶۴): اعشار۶۴
صعود و نزول و فاصله‌ی سطرها روی هم به پیکسل.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

پیشروی نویسه GlyphAdvance

تابع پیشروی نویسه(f: قلم، glyph: صحیح): صحیح
پیشروی افقی گلیف به واحد قلم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

کرنینگ KernAdvance

تابع کرنینگ(f: قلم، glyph1: صحیح، glyph2: صحیح): صحیح
فاصله‌گذاری دو گلیف از جدول قدیمی kern.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

شکل‌دهی عربی ShapeArabic

تابع شکل‌دهی عربی(text: رشته): رشته
حروف فارسی و عربی را با شکل‌های نمایشی پیوسته جایگزین می‌کند؛ شکل‌دهی پشتیبان برای قلم بی GSUB.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

شطرنجی کردن گلیف RasterizeGlyph

تابع شطرنجی کردن گلیف(f: قلم، glyph: صحیح، size: اعشار۶۴، subpixel: صحیح): ماسک گلیف
گلیف را با حساب ممیز ثابت در ماسک پوشش تازه رسم می‌کند، با جابجایی ۰ تا ۳ یک چهارم پیکسل؛ بایت‌ها در هر سیستم یکی است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

آزادسازی ماسک گلیف FreeGlyphMask

تابع آزادسازی ماسک گلیف(m &: ماسک گلیف)
ماسکی را که خودتان ساخته‌اید آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

درهم ماسک گلیف GlyphMaskHash

تابع درهم ماسک گلیف(m: ماسک گلیف): صحیح۶۴
درهم بایت‌های ماسک؛ برای آزمون‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

زیرپیکسل SubpixelOf

تابع زیرپیکسل(x: اعشار۶۴): صحیح
یک چهارم پیکسل (۰ تا ۳) یک جای افقی قلم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

مبدا افقی گلیف GlyphOriginX

تابع مبدا افقی گلیف(x: اعشار۶۴، m: ماسک گلیف): صحیح
ستون مقصد ماسک برای یک جای افقی قلم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

مبدا عمودی گلیف GlyphOriginY

تابع مبدا عمودی گلیف(y: اعشار۶۴، m: ماسک گلیف): صحیح
سطر مقصد ماسک برای یک خط پایه؛ جای عمودی به پیکسل کامل گرد می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

نهانگاه گلیف تازه NewGlyphCache

تابع نهانگاه گلیف تازه(capacity_bytes: صحیح): نهانگاه گلیف
نهانگاهی با بودجه‌ی بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

گلیف نهان CachedGlyph

تابع گلیف نهان(c &: نهانگاه گلیف، f: قلم، glyph: صحیح، size: اعشار۶۴، x: اعشار۶۴): ماسک گلیف
ماسک گلیف در یک اندازه و جای قلم، از نهانگاه یا تازه؛ تا فراخوانی بعدی که ممکن است آن را بیرون کند معتبر است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

آزادسازی نهانگاه گلیف FreeGlyphCache

تابع آزادسازی نهانگاه گلیف(c &: نهانگاه گلیف)
نهانگاه و همه‌ی ماسک‌هایش را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

متن نام NameString

تابع متن نام(f: قلم، name_id: صحیح): رشته
یک رشته از جدول name با شماره‌اش (۱ خانواده، ۲ سبک، ۴ نام کامل).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

نام خانواده FamilyName

تابع نام خانواده(f: قلم): رشته
نام خانواده، همان که در font-family نوشته می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

نام سبک قلم StyleName

تابع نام سبک قلم(f: قلم): رشته
نام سبک، مثل Regular یا Bold Italic.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

نام کامل قلم FullName

تابع نام کامل قلم(f: قلم): رشته
نام کامل چهره.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

وزن قلم Weight

تابع وزن قلم(f: قلم): صحیح
وزن از ۱۰۰ تا ۹۰۰؛ ۴۰۰ معمولی و ۷۰۰ پررنگ.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

مورب است IsItalic

تابع مورب است(f: قلم): منطقی
چهره مورب یا کج است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

متریک‌ها Metrics

تابع متریک‌ها(f: قلم): متریک قلم
متریک‌های عمودی با در نظر گرفتن جدول OS/2.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

شمار چهره‌ها FaceCount

تابع شمار چهره‌ها(p: تهی*، n: صحیح): صحیح
شمار چهره‌ها در بایت‌های قلم (برای TTC بیش از یکی).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

کادر نویسه GlyphBox

تابع کادر نویسه(f: قلم، glyph: صحیح، x0 &: صحیح، y0 &: صحیح، x1 &: صحیح، y1 &: صحیح): منطقی
کادر دور گلیف به واحد قلم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

نویسه طرح دارد GlyphHasOutline

تابع نویسه طرح دارد(f: قلم، glyph: صحیح): منطقی
گلیف کانتور دارد (فاصله ندارد).

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

طرح تبدیل‌شده TransformedOutline

تابع طرح تبدیل‌شده(f: قلم، glyph: صحیح، a: اعشار۶۴، b: اعشار۶۴، c: اعشار۶۴، d: اعشار۶۴، dx: اعشار۶۴، dy: اعشار۶۴): طرح نویسه
طرح گلیف پس از یک ماتریس ۲ در ۲ و یک جابجایی، با اعشار؛ std/ai/image با آن رسم می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

آزادسازی طرح FreeOutline

تابع آزادسازی طرح(o &: طرح نویسه)
طرح را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

خواندن قلم با اندیس ParseFontIndex

تابع خواندن قلم با اندیس(p: تهی*، n: صحیح، index: صحیح، ok &: منطقی): قلم
چهره‌ی i یک قلم یا مجموعه‌ی TTC را از بایت‌ها می‌خواند؛ بایت‌ها رونوشت می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

خواندن قلم ParseFont

تابع خواندن قلم(p: تهی*، n: صحیح، ok &: منطقی): قلم
نخستین چهره‌ی قلم را از بایت‌ها می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

بارگذاری قلم LoadFont

تابع بارگذاری قلم(path: رشته، ok &: منطقی): قلم
پرونده‌ی .ttf را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

بارگذاری قلم با اندیس LoadFontIndex

تابع بارگذاری قلم با اندیس(path: رشته، index: صحیح، ok &: منطقی): قلم
چهره‌ی i پرونده‌ی .ttf یا .ttc را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

آزادسازی قلم FreeFont

تابع آزادسازی قلم(f &: قلم)
حافظه‌ی قلم را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

قلم معتبر FontValid

تابع قلم معتبر(f: قلم): منطقی
قلم بار شده و قابل استفاده است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

قلم سی‌اف‌اف است IsCFFFont

تابع قلم سی‌اف‌اف است(p: تهی*، n: صحیح): منطقی
بایت‌ها قلمی با طرح CFF است که این بسته رسم نمی‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

واحد در ام UnitsPerEm

تابع واحد در ام(f: قلم): صحیح
شمار واحدهای قلم در یک ام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

تعداد نویسه‌ها NumGlyphs

تابع تعداد نویسه‌ها(f: قلم): صحیح
شمار گلیف‌ها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

اندیس نویسه GlyphIndex

تابع اندیس نویسه(f: قلم، codepoint: صحیح): صحیح
گلیف یک نقطه‌کد یونیکد؛ اگر نباشد ۰.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Fonts.salam

متن راست به چپ است IsRTLText

تابع متن راست به چپ است(text: رشته): منطقی
متن حرف راست‌به‌چپ دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

جهت پایه BaseDirection

تابع جهت پایه(text: رشته): صحیح
جهت نخستین حرف قوی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

به ترتیب نمایشی ToVisualOrder

تابع به ترتیب نمایشی(text: رشته، dir: صحیح): رشته
متن شکل‌یافته با شکل‌های نمایشی و چیده برای رسم از چپ به راست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

کدهای نمایشی VisualCodepoints

تابع کدهای نمایشی(text: رشته، dir: صحیح، shape: منطقی): وکتور<صحیح>
نقطه‌کدهای ToVisualOrder، اگر بخواهید بدون شکل‌دهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Shape.salam

پوشش طرح OutlineCoverage

تابع پوشش طرح(o: طرح نویسه، clip_width: صحیح، clip_height: صحیح): سطرهای پوشش
طرح را با پرکننده‌ی سطری بسته‌ی تصویر پر می‌کند، بریده به اندازه‌ی بوم.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam

آزادسازی سطرهای پوشش FreeCoverageRows

تابع آزادسازی سطرهای پوشش(c &: سطرهای پوشش)
سطرهای پوشش را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gui-typeset-Raster.salam