packages feed

SVGFonts 1.8 → 1.8.0.1

raw patch · 4 files changed

+73/−10 lines, 4 filesdep ~containersdep ~data-default-classPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: containers, data-default-class

API changes (from Hackage documentation)

Files

CHANGES.md view
@@ -1,3 +1,8 @@+1.8.0.1 (1 Nov 2021)+--------------------++- Include a migration guide for updating to version 1.8.+ 1.8 (15 Oct 2021) ----------------- 
README.md view
@@ -5,17 +5,17 @@ written in Haskell.  You can convert your own font to SVG with-http://fontforge.sourceforge.net/ or use the included LinLibertine,-Bitstream.+[FontForge](http://fontforge.sourceforge.net/) or use one of the+SVG fonts included with the library. -## Features +## Features  Complete implementation of the features that fontforge produces (but not the complete SVG format): -* Kerning (e.g. the two characters in "VA" have a shorter distance than in "VV") -* Unicode -* Ligatures +* Kerning (e.g. the two characters in "VA" have a shorter distance than in "VV")+* Unicode+* Ligatures * Text boxes with syntax highlighting  XML speed issues can be solved by trimming the svg file to only those@@ -43,8 +43,61 @@  ## Usage -Convert your favourite font (i.e.  .ttf) into a .svg file with+Convert your favourite font (*i.e.* `.ttf`) into a `.svg` file with fontforge (the menu item under "Save All"). If a font converted on your own doesn't work, try the repair options, and if this still-doesn't work edit the file by hand or tell me.  Remember that a lot of-fonts are not allowed to be distributed freely.+doesn't work edit the file by hand or [report an+issue](https://github.com/diagrams/SVGFonts/issues).  Remember that a+lot of fonts are not allowed to be distributed freely.++## Porting to version 1.8++Version 1.8 of the library greatly improved the API but introduced a+number of breaking changes.++Previously, functions provided by the library took a large `TextOpts`+options record and directly produced a diagrams `Path`. For example,+it was common to see code like this:++```+text' font h s = (strokeP $ textSVG' (TextOpts font INSIDE_H KERN False h h) s)+               # lw none # fc black+```++Compared to this, version 1.8:+- Introduces a new intermediate type `PathInRect`+- Splits out width and height options into dedicated+  combinators such as `fit_width` and `fit_height`+- There are also several new functions that allow specifying width and+  height in different ways, such as `svgText_fitRect` and `svgText_fitRect_stretchySpace`.++The only things remaining in `TextOpts` are options for the font,+spacing mode, and underline.++Here is an idiomatic way to translate the above example code into the+new API:++```+text' font h s+  = s+  # svgText def { textFont = font }+  # fit_height h+  # set_envelope+  # lw none # fc black+```++- We use the `svgText` function with a default options record `def`,+  overriding the `textFont` field to set the font explicitly.+- We then use the `fit_height` function to scale the resulting text so+  it has height `h`.  This corresponds to our previous use of+  `INSIDE_H`.  This is probably the most common mode, but `fit_width`+  and `svgText_fitRect` also available.+- Finally, we call `set_envelope` which converts a `PathInRect` to a+  `Diagram`, by stroking the text path and appropriately setting the+  envelope.+- If you actually want an explicit `Path` instead of a `Diagram`, you+  can call `drop_rect` instead of `set_envelope`.+- Note that the old `textSVG'` function resulted in a centered local+  origin, whereas all the new API functions result in a local origin+  and the left end of the text baseline.  If you need the text+  centered, you can of course call `centerXY`.
SVGFonts.cabal view
@@ -1,5 +1,5 @@ Name:             SVGFonts-Version:          1.8+Version:          1.8.0.1 Synopsis:         Fonts from the SVG-Font format Description:      Native font support for the diagrams framework (<https://diagrams.github.io/>). Note that this package can be used with any diagrams backend, not just the SVG backend.  The SVG-font format is easy to parse                   and was therefore chosen for a font library completely written in Haskell.@@ -20,6 +20,8 @@                   XML speed issues can be solved by trimming the svg file to only those characters that are used (or maybe binary xml one day).                   .                   Version 1.0 of this library supports texturing, though this only makes sense in a diagrams backend that does rasterization in Haskell, such as diagrams-rasterific.+                  .+                  __Note__: for help porting pre-1.8 code to SVGFonts-1.8, <https://github.com/diagrams/SVGFonts/#porting-to-version-18 see the README>.                   . category:         Graphics License:          BSD3
src/Graphics/SVGFonts.hs view
@@ -1,4 +1,7 @@ {-|++  __Note__: for help porting pre-1.8 code to SVGFonts-1.8, <https://github.com/diagrams/SVGFonts/#porting-to-version-18 see the README>.+   == Text drawing example    The following is a simple example that covers basic use cases of the