From d782a51bcae5693824f5cac6ba823ce2c7c4e4ae Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 5 Jun 2023 22:35:37 +0200 Subject: [PATCH] Document disabling ligatures and/or kerning in Using fonts This also mentions the `connected` parameter available in the `tornado`, `wave`, `shake` built-in RichTextEffects. --- tutorials/ui/bbcode_in_richtextlabel.rst | 26 +++++++++++++----- tutorials/ui/gui_using_fonts.rst | 8 ++++++ ...onts_font_variation_disable_ligatures.webp | Bin 0 -> 16916 bytes 3 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 tutorials/ui/img/using_fonts_font_variation_disable_ligatures.webp diff --git a/tutorials/ui/bbcode_in_richtextlabel.rst b/tutorials/ui/bbcode_in_richtextlabel.rst index 1b54aefaa..9eb1f0ed1 100644 --- a/tutorials/ui/bbcode_in_richtextlabel.rst +++ b/tutorials/ui/bbcode_in_richtextlabel.rst @@ -711,11 +711,15 @@ Wave .. image:: img/bbcode_in_richtextlabel_effect_wave.webp Wave makes the text go up and down. Its tag format is -``[wave amp=50.0 freq=5.0]{text}[/wave]``. +``[wave amp=50.0 freq=5.0 connected=1]{text}[/wave]``. ``amp`` controls how high and low the effect goes, and ``freq`` controls how fast the text goes up and down. A ``freq`` value of ``0`` will result in no -visible waves, and negative ``freq`` values won't display any waves either. +visible waves, and negative ``freq`` values won't display any waves either. If +``connected`` is ``1`` (default), glyphs with ligatures will be moved together. +If ``connected`` is ``0``, each glyph is moved individually even if they are +joined by ligatures. This can work around certain rendering issues with font +ligatures. Tornado ~~~~~~~ @@ -723,21 +727,29 @@ Tornado .. image:: img/bbcode_in_richtextlabel_effect_tornado.webp Tornao makes the text move around in a circle. Its tag format is -``[tornado radius=10.0 freq=1.0]{text}[/tornado]``. +``[tornado radius=10.0 freq=1.0 connected=1]{text}[/tornado]``. ``radius`` is the radius of the circle that controls the offset, ``freq`` is how fast the text moves in a circle. A ``freq`` value of ``0`` will pause the -animation, while negative ``freq`` will play the animation backwards. +animation, while negative ``freq`` will play the animation backwards. If +``connected`` is ``1`` (default), glyphs with ligatures will be moved together. +If ``connected`` is ``0``, each glyph is moved individually even if they are +joined by ligatures. This can work around certain rendering issues with font +ligatures. Shake ~~~~~ .. image:: img/bbcode_in_richtextlabel_effect_shake.webp -Shake makes the text shake. Its tag format is ``[shake rate=20.0 level=5]{text}[/shake]``. +Shake makes the text shake. Its tag format is +``[shake rate=20.0 level=5 connected=1]{text}[/shake]``. -``rate`` controls how fast the text shakes, ``level`` controls how far the text is -offset from the origin. +``rate`` controls how fast the text shakes, ``level`` controls how far the text +is offset from the origin. If ``connected`` is ``1`` (default), glyphs with +ligatures will be moved together. If ``connected`` is ``0``, each glyph is moved +individually even if they are joined by ligatures. This can work around certain +rendering issues with font ligatures. Fade ~~~~ diff --git a/tutorials/ui/gui_using_fonts.rst b/tutorials/ui/gui_using_fonts.rst index 7ee0f6511..f98a18a8f 100644 --- a/tutorials/ui/gui_using_fonts.rst +++ b/tutorials/ui/gui_using_fonts.rst @@ -629,6 +629,14 @@ For example, here's the `Inter `__ font without the OpenType feature comparison (Inter) +You can disable ligatures and/or kerning for a specific font by adding OpenType +features, then unchecking them in the inspector: + +.. figure:: img/using_fonts_font_variation_disable_ligatures.webp + :align: center + + Disabling ligatures and kerning for a font + .. _doc_using_fonts_system_fonts: System fonts diff --git a/tutorials/ui/img/using_fonts_font_variation_disable_ligatures.webp b/tutorials/ui/img/using_fonts_font_variation_disable_ligatures.webp new file mode 100644 index 0000000000000000000000000000000000000000..cd4fe1e8c48ebf0f69f1a53a330cb66d4998139e GIT binary patch literal 16916 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 ftP3JCVe=I0FCZuN#6*E6eT1)3P literal 0 HcmV?d00001