New Upstream Snapshot - r-cran-systemfonts

Ready changes

Summary

Merged new upstream version: 1.0.4+git20220303.1.99b6c63 (was: 1.0.4).

Resulting package

Built on 2023-01-20T04:02 (took 10m7s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-snapshots r-cran-systemfonts-dbgsymapt install -t fresh-snapshots r-cran-systemfonts

Lintian Result

Diff

diff --git a/DESCRIPTION b/DESCRIPTION
index c60f956..c270cfb 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,48 +1,41 @@
-Package: systemfonts
 Type: Package
+Package: systemfonts
 Title: System Native Font Finding
-Version: 1.0.4
-Authors@R: 
-    c(person(given = "Thomas Lin",
-             family = "Pedersen",
-             role = c("aut", "cre"),
-             email = "thomas.pedersen@rstudio.com",
-             comment = c(ORCID = "0000-0002-5147-4711")),
-      person(given = "Jeroen", 
-             family = "Ooms", 
-             role = "aut",
-             email = "jeroen@berkeley.edu",
-             comment = c(ORCID = "0000-0002-4035-0289")),
-      person(given = "Devon",
-             family = "Govett",
-             role = "aut",
-             comment = "Author of font-manager"),
-      person(given = "RStudio",
-             role = "cph"))
+Version: 1.0.4.9000
+Authors@R: c(
+    person("Thomas Lin", "Pedersen", , "thomas.pedersen@rstudio.com", role = c("aut", "cre"),
+           comment = c(ORCID = "0000-0002-5147-4711")),
+    person("Jeroen", "Ooms", , "jeroen@berkeley.edu", role = "aut",
+           comment = c(ORCID = "0000-0002-4035-0289")),
+    person("Devon", "Govett", role = "aut",
+           comment = "Author of font-manager"),
+    person("RStudio", role = c("cph", "fnd"))
+  )
 Maintainer: Thomas Lin Pedersen <thomas.pedersen@rstudio.com>
 Description: Provides system native access to the font catalogue. As font
-    handling varies between systems it is difficult to correctly locate 
-    installed fonts across different operating systems. The 'systemfonts' 
-    package provides bindings to the native libraries on Windows, macOS and 
-    Linux for finding font files that can then be used further by e.g. graphic
-    devices. The main use is intended to be from compiled code but 'systemfonts'
-    also provides access from R.
+    handling varies between systems it is difficult to correctly locate
+    installed fonts across different operating systems. The 'systemfonts'
+    package provides bindings to the native libraries on Windows, macOS
+    and Linux for finding font files that can then be used further by e.g.
+    graphic devices. The main use is intended to be from compiled code but
+    'systemfonts' also provides access from R.
 License: MIT + file LICENSE
+URL: https://github.com/r-lib/systemfonts,
+        https://systemfonts.r-lib.org
+BugReports: https://github.com/r-lib/systemfonts/issues
+Depends: R (>= 3.2.0)
+Suggests: covr, knitr, rmarkdown, testthat (>= 2.1.0), tools
+LinkingTo: cpp11 (>= 0.2.1)
+VignetteBuilder: knitr
 Encoding: UTF-8
+Roxygen: list(markdown = TRUE)
 RoxygenNote: 7.1.2
-Depends: R (>= 3.2.0)
 SystemRequirements: C++11, fontconfig, freetype2
-Suggests: testthat (>= 2.1.0), covr, knitr, rmarkdown, tools
-VignetteBuilder: knitr
-URL: https://github.com/r-lib/systemfonts
-BugReports: https://github.com/r-lib/systemfonts/issues
-LinkingTo: cpp11 (>= 0.2.1)
+Config/Needs/website: tidyverse/tidytemplate
 NeedsCompilation: yes
-Packaged: 2022-02-11 12:33:22 UTC; thomas
+Packaged: 2023-01-20 03:58:12 UTC; root
 Author: Thomas Lin Pedersen [aut, cre]
     (<https://orcid.org/0000-0002-5147-4711>),
   Jeroen Ooms [aut] (<https://orcid.org/0000-0002-4035-0289>),
   Devon Govett [aut] (Author of font-manager),
-  RStudio [cph]
-Repository: CRAN
-Date/Publication: 2022-02-11 12:50:02 UTC
+  RStudio [cph, fnd]
diff --git a/MD5 b/MD5
deleted file mode 100644
index d7275bb..0000000
--- a/MD5
+++ /dev/null
@@ -1,83 +0,0 @@
-a970b9f73ad491a898aa96359d604980 *DESCRIPTION
-c31ee18d335f7158ed985f5939319c1f *LICENSE
-a80dfddcb725c83d6fa1d3923d5f04a6 *NAMESPACE
-f760f0155695e5fdbef18bf8352fb183 *NEWS.md
-7d0092b74385ec0ffe07694f41d7a805 *R/cpp11.R
-74786ff5d1f5dde3454d17d8a2de1ccb *R/dev_strings.R
-66d9e75c427bf2b9d93f6bb0d98699d3 *R/emoji.R
-5053fb4f83f7e4f94463dea449be7450 *R/font_fallback.R
-8cf375361de8bedfaf4955e00ef310a9 *R/font_feature.R
-f08dbe6e31cb20ddff76802233549360 *R/font_info.R
-6bed66bb46a33b842a95f6b7215b83cb *R/match_font.R
-41637e675237fcbe35f0651859e570bd *R/register_font.R
-d7f3fc65c934ef1e8f790c7c3b2a60af *R/shape_string.R
-450a8e74d61467c86628109be3551119 *R/sysdata.rda
-165dfbd7c92ee330d2db50741351cbd8 *R/system_fonts.R
-c37f3cd43d3c984f5296a4e7d4805eb0 *R/systemfonts-package.R
-570a35188f80282e2dcf272d7e6cc985 *R/zzz.R
-0f4c77b50576fe87188e4315a5310260 *README.md
-d80f55f3e0e8db48ad755b47277fcb3c *build/vignette.rds
-bc7baead3b6080f04dc81efd2fe1ff39 *cleanup
-52b84dc885a7ea17a0fd068324d775a5 *configure
-cfe5eded1693d8ac61eb889b0f172855 *inst/doc/c_interface.R
-ff709403f071158d8ee8d30650dc5057 *inst/doc/c_interface.Rmd
-2592fad53efdbfebde4f4b9991a5cfaf *inst/doc/c_interface.html
-e3514da4b456dfdddebe8f5489c01b62 *inst/include/systemfonts-ft.h
-5924df9b947994952fa01dc979602f8f *inst/include/systemfonts.h
-a11ff11ac7db5df57660f50d65378bf2 *inst/unfont.ttf
-4bfc3f4ad94e379a65f36a1cd9364381 *man/font_fallback.Rd
-15ed44c9c419c96ae22dc32a09dc5b98 *man/font_feature.Rd
-12c76979aff6f0bd13467a94ea3eaa03 *man/font_info.Rd
-c4332e3048542cbeda8a4a7f440fc124 *man/get_fallback.Rd
-a841e521cec7d4a455c97c7ee1564226 *man/glyph_info.Rd
-75e018c1a3b0e79a2c562e411be05f72 *man/match_font.Rd
-34693ca3cfabeae8649fe38bb6dbbc5c *man/register_font.Rd
-992a55bdfcaeb7d05de814efe0f104b5 *man/register_variant.Rd
-ca64aa1bae2aa845146067a60d7af460 *man/reset_font_cache.Rd
-bcdb383fbedf598c6a0bc9060185d30b *man/shape_string.Rd
-28140ce0092af1bba0a0cd5f8c3c0a50 *man/str_split_emoji.Rd
-74916bb9316fb3b3ef6f9f9b6358dba4 *man/string_metrics_dev.Rd
-0eecd59cfa105df9a1bd479cdda2e523 *man/string_width.Rd
-c72ad2a644aa183945b66164aee58ec6 *man/string_widths_dev.Rd
-8c3dc7bc1e63c3195611e49364bea5da *man/system_fonts.Rd
-ca953f6fababbad60507592443b6b011 *man/systemfonts-package.Rd
-7236e24bab89c4c730c18cc6f2b3416a *src/FontDescriptor.h
-14634167b6c1d5c27e1e22412a7f7831 *src/Makevars.in
-75bf15e59a0eb5e5cb133640857cb35c *src/Makevars.ucrt
-729e4a6a6a60e8432727b68855c878e3 *src/Makevars.win
-f21f62b8a7e300c356c8ac326552f0c2 *src/cache_lru.h
-a2c2da6400632a7bc5fdfd14d73b6a8c *src/cache_store.cpp
-69b85b17e10134f34f962d12c6bb9f5e *src/cache_store.h
-b9b716df5de987ffda3523f5254f887f *src/caches.cpp
-370ae88cc338f925b3e8ec399c0f0b65 *src/caches.h
-d1a4598c05a7ef718043b968c3d53f3c *src/cpp11.cpp
-8e340c25049f84658747dc1ec0f0fd18 *src/dev_metrics.cpp
-689e955be1d6b4baf0c9a0811ae3b9aa *src/dev_metrics.h
-04b170936547e799a6875fda13577cb5 *src/emoji.cpp
-a82f523519ac1dd5809e8e5bdd6505d2 *src/emoji.h
-54a478790815a2f59d9a76372547f18b *src/font_fallback.cpp
-94411cf3eafd1c8ec3c59dcd24053197 *src/font_fallback.h
-c50816e9be1f20c6d1c9ec926b19ed4f *src/font_matching.cpp
-55b567597acd78c9439d2dc497fd7f72 *src/font_matching.h
-432e0b3844da87427f41a60176d91ad6 *src/font_metrics.cpp
-f21e79dd4b048af55cae1ff00e42ad68 *src/font_metrics.h
-b4fdb641afd2d854a6266e283c4ce030 *src/font_registry.cpp
-8b56ef67884fa3b41f6205d30e8afcdd *src/font_registry.h
-b968d5ab865a471b4637d2008d02986b *src/ft_cache.cpp
-77d890efe3c5705fd72104c0e89dd0bf *src/ft_cache.h
-cf5c2dd2dcccb5d26dcbe464e60136d9 *src/init.cpp
-a14e85b8afdaf681b19ac4fc2ec026c7 *src/mac/FontManagerMac.mm
-b3bedef5c2657632a2d7c4c0e6be898c *src/string_metrics.cpp
-e2a636534334f3ce1bf42187f2055476 *src/string_metrics.h
-97c13bfe96a94b47d053f72516c0b2c1 *src/string_shape.cpp
-816f23f7d26dd1ffec58794d662519bc *src/string_shape.h
-2eeab25b421d60d1b5d4963865ff93a5 *src/types.h
-a11244add4eab85323501c1f3bee1a8d *src/unix/FontManagerLinux.cpp
-d6de2d619c1a22a5fc700fe05d32c6b3 *src/utils.h
-882d23bb7c881e87eb82a0de7952d0da *src/win/DirectWriteFontManagerWindows.cpp
-985d9d7ea74875a87ca2d329e23aca90 *src/win/FontManagerWindows.cpp
-2b7eaaf1f6572e72dde8052c8c14412a *tests/testthat.R
-67874f8c9e8d68433167033af2a26c34 *tests/testthat/test-match_font.R
-928495dc1e966e04e0c4fc7c89e56056 *tests/testthat/test-system_fonts.R
-e57df1d506e2920303862076a0f9ecad *tools/winlibs.R
-ff709403f071158d8ee8d30650dc5057 *vignettes/c_interface.Rmd
diff --git a/NEWS.md b/NEWS.md
index ee999b3..332ce38 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,5 @@
+# systemfonts (development version)
+
 # systemfonts 1.0.4
 
 * Provide a fallback solution to the setup of the CRAN windows builder so that
diff --git a/build/vignette.rds b/build/vignette.rds
index d8c561c..fa60d54 100644
Binary files a/build/vignette.rds and b/build/vignette.rds differ
diff --git a/debian/changelog b/debian/changelog
index e0fc3ac..3d963e0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+r-cran-systemfonts (1.0.4+git20220303.1.99b6c63-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Fri, 20 Jan 2023 03:58:24 -0000
+
 r-cran-systemfonts (1.0.4-1) unstable; urgency=medium
 
   * New upstream version
diff --git a/inst/doc/c_interface.html b/inst/doc/c_interface.html
index feea2e5..157f7af 100644
--- a/inst/doc/c_interface.html
+++ b/inst/doc/c_interface.html
@@ -14,7 +14,19 @@
 
 <title>systemfonts C interface</title>
 
-<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
+<script>// Pandoc 2.9 adds attributes on both header and div. We remove the former (to
+// be compatible with the behavior of Pandoc < 2.8).
+document.addEventListener('DOMContentLoaded', function(e) {
+  var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
+  var i, h, a;
+  for (i = 0; i < hs.length; i++) {
+    h = hs[i];
+    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6
+    a = h.attributes;
+    while (a.length > 0) h.removeAttribute(a[0].name);
+  }
+});
+</script>
 
 <style type="text/css">
   code{white-space: pre-wrap;}
@@ -26,6 +38,7 @@
     </style>
 
 
+
 <style type="text/css">
   code {
     white-space: pre;
@@ -73,7 +86,7 @@ code span.al { color: #ff0000; font-weight: bold; } /* Alert */
 code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
 code span.at { color: #7d9029; } /* Attribute */
 code span.bn { color: #40a070; } /* BaseN */
-code span.bu { } /* BuiltIn */
+code span.bu { color: #008000; } /* BuiltIn */
 code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
 code span.ch { color: #4070a0; } /* Char */
 code span.cn { color: #880000; } /* Constant */
@@ -86,7 +99,7 @@ code span.er { color: #ff0000; font-weight: bold; } /* Error */
 code span.ex { } /* Extension */
 code span.fl { color: #40a070; } /* Float */
 code span.fu { color: #06287e; } /* Function */
-code span.im { } /* Import */
+code span.im { color: #008000; font-weight: bold; } /* Import */
 code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
 code span.kw { color: #007020; font-weight: bold; } /* Keyword */
 code span.op { color: #666666; } /* Operator */
@@ -107,13 +120,20 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
   for (var i = 0; i < sheets.length; i++) {
     if (sheets[i].ownerNode.dataset["origin"] !== "pandoc") continue;
     try { var rules = sheets[i].cssRules; } catch (e) { continue; }
-    for (var j = 0; j < rules.length; j++) {
+    var j = 0;
+    while (j < rules.length) {
       var rule = rules[j];
       // check if there is a div.sourceCode rule
-      if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") continue;
+      if (rule.type !== rule.STYLE_RULE || rule.selectorText !== "div.sourceCode") {
+        j++;
+        continue;
+      }
       var style = rule.style.cssText;
       // check if color or background-color is set
-      if (rule.style.color === '' && rule.style.backgroundColor === '') continue;
+      if (rule.style.color === '' && rule.style.backgroundColor === '') {
+        j++;
+        continue;
+      }
       // replace div.sourceCode by a pre.sourceCode rule
       sheets[i].deleteRule(j);
       sheets[i].insertRule('pre.sourceCode{' + style + '}', j);
@@ -125,7 +145,187 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 
 
 
-<link rel="stylesheet" href="data:text/css,body%20%7B%0Abackground%2Dcolor%3A%20%23fff%3B%0Amargin%3A%201em%20auto%3B%0Amax%2Dwidth%3A%20700px%3B%0Aoverflow%3A%20visible%3B%0Apadding%2Dleft%3A%202em%3B%0Apadding%2Dright%3A%202em%3B%0Afont%2Dfamily%3A%20%22Open%20Sans%22%2C%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20Arial%2C%20sans%2Dserif%3B%0Afont%2Dsize%3A%2014px%3B%0Aline%2Dheight%3A%201%2E35%3B%0A%7D%0A%23TOC%20%7B%0Aclear%3A%20both%3B%0Amargin%3A%200%200%2010px%2010px%3B%0Apadding%3A%204px%3B%0Awidth%3A%20400px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Aborder%2Dradius%3A%205px%3B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Afont%2Dsize%3A%2013px%3B%0Aline%2Dheight%3A%201%2E3%3B%0A%7D%0A%23TOC%20%2Etoctitle%20%7B%0Afont%2Dweight%3A%20bold%3B%0Afont%2Dsize%3A%2015px%3B%0Amargin%2Dleft%3A%205px%3B%0A%7D%0A%23TOC%20ul%20%7B%0Apadding%2Dleft%3A%2040px%3B%0Amargin%2Dleft%3A%20%2D1%2E5em%3B%0Amargin%2Dtop%3A%205px%3B%0Amargin%2Dbottom%3A%205px%3B%0A%7D%0A%23TOC%20ul%20ul%20%7B%0Amargin%2Dleft%3A%20%2D2em%3B%0A%7D%0A%23TOC%20li%20%7B%0Aline%2Dheight%3A%2016px%3B%0A%7D%0Atable%20%7B%0Amargin%3A%201em%20auto%3B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dcolor%3A%20%23DDDDDD%3B%0Aborder%2Dstyle%3A%20outset%3B%0Aborder%2Dcollapse%3A%20collapse%3B%0A%7D%0Atable%20th%20%7B%0Aborder%2Dwidth%3A%202px%3B%0Apadding%3A%205px%3B%0Aborder%2Dstyle%3A%20inset%3B%0A%7D%0Atable%20td%20%7B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dstyle%3A%20inset%3B%0Aline%2Dheight%3A%2018px%3B%0Apadding%3A%205px%205px%3B%0A%7D%0Atable%2C%20table%20th%2C%20table%20td%20%7B%0Aborder%2Dleft%2Dstyle%3A%20none%3B%0Aborder%2Dright%2Dstyle%3A%20none%3B%0A%7D%0Atable%20thead%2C%20table%20tr%2Eeven%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Ap%20%7B%0Amargin%3A%200%2E5em%200%3B%0A%7D%0Ablockquote%20%7B%0Abackground%2Dcolor%3A%20%23f6f6f6%3B%0Apadding%3A%200%2E25em%200%2E75em%3B%0A%7D%0Ahr%20%7B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%3A%20none%3B%0Aborder%2Dtop%3A%201px%20solid%20%23777%3B%0Amargin%3A%2028px%200%3B%0A%7D%0Adl%20%7B%0Amargin%2Dleft%3A%200%3B%0A%7D%0Adl%20dd%20%7B%0Amargin%2Dbottom%3A%2013px%3B%0Amargin%2Dleft%3A%2013px%3B%0A%7D%0Adl%20dt%20%7B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Aul%20%7B%0Amargin%2Dtop%3A%200%3B%0A%7D%0Aul%20li%20%7B%0Alist%2Dstyle%3A%20circle%20outside%3B%0A%7D%0Aul%20ul%20%7B%0Amargin%2Dbottom%3A%200%3B%0A%7D%0Apre%2C%20code%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0Aborder%2Dradius%3A%203px%3B%0Acolor%3A%20%23333%3B%0Awhite%2Dspace%3A%20pre%2Dwrap%3B%20%0A%7D%0Apre%20%7B%0Aborder%2Dradius%3A%203px%3B%0Amargin%3A%205px%200px%2010px%200px%3B%0Apadding%3A%2010px%3B%0A%7D%0Apre%3Anot%28%5Bclass%5D%29%20%7B%0Abackground%2Dcolor%3A%20%23f7f7f7%3B%0A%7D%0Acode%20%7B%0Afont%2Dfamily%3A%20Consolas%2C%20Monaco%2C%20%27Courier%20New%27%2C%20monospace%3B%0Afont%2Dsize%3A%2085%25%3B%0A%7D%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%7B%0Apadding%3A%202px%200px%3B%0A%7D%0Adiv%2Efigure%20%7B%0Atext%2Dalign%3A%20center%3B%0A%7D%0Aimg%20%7B%0Abackground%2Dcolor%3A%20%23FFFFFF%3B%0Apadding%3A%202px%3B%0Aborder%3A%201px%20solid%20%23DDDDDD%3B%0Aborder%2Dradius%3A%203px%3B%0Aborder%3A%201px%20solid%20%23CCCCCC%3B%0Amargin%3A%200%205px%3B%0A%7D%0Ah1%20%7B%0Amargin%2Dtop%3A%200%3B%0Afont%2Dsize%3A%2035px%3B%0Aline%2Dheight%3A%2040px%3B%0A%7D%0Ah2%20%7B%0Aborder%2Dbottom%3A%204px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Apadding%2Dbottom%3A%202px%3B%0Afont%2Dsize%3A%20145%25%3B%0A%7D%0Ah3%20%7B%0Aborder%2Dbottom%3A%202px%20solid%20%23f7f7f7%3B%0Apadding%2Dtop%3A%2010px%3B%0Afont%2Dsize%3A%20120%25%3B%0A%7D%0Ah4%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23f7f7f7%3B%0Amargin%2Dleft%3A%208px%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Ah5%2C%20h6%20%7B%0Aborder%2Dbottom%3A%201px%20solid%20%23ccc%3B%0Afont%2Dsize%3A%20105%25%3B%0A%7D%0Aa%20%7B%0Acolor%3A%20%230033dd%3B%0Atext%2Ddecoration%3A%20none%3B%0A%7D%0Aa%3Ahover%20%7B%0Acolor%3A%20%236666ff%3B%20%7D%0Aa%3Avisited%20%7B%0Acolor%3A%20%23800080%3B%20%7D%0Aa%3Avisited%3Ahover%20%7B%0Acolor%3A%20%23BB00BB%3B%20%7D%0Aa%5Bhref%5E%3D%22http%3A%22%5D%20%7B%0Atext%2Ddecoration%3A%20underline%3B%20%7D%0Aa%5Bhref%5E%3D%22https%3A%22%5D%20%7B%0Atext%2Ddecoration%3A%20underline%3B%20%7D%0A%0Acode%20%3E%20span%2Ekw%20%7B%20color%3A%20%23555%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Edt%20%7B%20color%3A%20%23902000%3B%20%7D%20%0Acode%20%3E%20span%2Edv%20%7B%20color%3A%20%2340a070%3B%20%7D%20%0Acode%20%3E%20span%2Ebn%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Efl%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Ech%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Est%20%7B%20color%3A%20%23d14%3B%20%7D%20%0Acode%20%3E%20span%2Eco%20%7B%20color%3A%20%23888888%3B%20font%2Dstyle%3A%20italic%3B%20%7D%20%0Acode%20%3E%20span%2Eot%20%7B%20color%3A%20%23007020%3B%20%7D%20%0Acode%20%3E%20span%2Eal%20%7B%20color%3A%20%23ff0000%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Efu%20%7B%20color%3A%20%23900%3B%20font%2Dweight%3A%20bold%3B%20%7D%20%0Acode%20%3E%20span%2Eer%20%7B%20color%3A%20%23a61717%3B%20background%2Dcolor%3A%20%23e3d2d2%3B%20%7D%20%0A" type="text/css" />
+<style type="text/css">body {
+background-color: #fff;
+margin: 1em auto;
+max-width: 700px;
+overflow: visible;
+padding-left: 2em;
+padding-right: 2em;
+font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+font-size: 14px;
+line-height: 1.35;
+}
+#TOC {
+clear: both;
+margin: 0 0 10px 10px;
+padding: 4px;
+width: 400px;
+border: 1px solid #CCCCCC;
+border-radius: 5px;
+background-color: #f6f6f6;
+font-size: 13px;
+line-height: 1.3;
+}
+#TOC .toctitle {
+font-weight: bold;
+font-size: 15px;
+margin-left: 5px;
+}
+#TOC ul {
+padding-left: 40px;
+margin-left: -1.5em;
+margin-top: 5px;
+margin-bottom: 5px;
+}
+#TOC ul ul {
+margin-left: -2em;
+}
+#TOC li {
+line-height: 16px;
+}
+table {
+margin: 1em auto;
+border-width: 1px;
+border-color: #DDDDDD;
+border-style: outset;
+border-collapse: collapse;
+}
+table th {
+border-width: 2px;
+padding: 5px;
+border-style: inset;
+}
+table td {
+border-width: 1px;
+border-style: inset;
+line-height: 18px;
+padding: 5px 5px;
+}
+table, table th, table td {
+border-left-style: none;
+border-right-style: none;
+}
+table thead, table tr.even {
+background-color: #f7f7f7;
+}
+p {
+margin: 0.5em 0;
+}
+blockquote {
+background-color: #f6f6f6;
+padding: 0.25em 0.75em;
+}
+hr {
+border-style: solid;
+border: none;
+border-top: 1px solid #777;
+margin: 28px 0;
+}
+dl {
+margin-left: 0;
+}
+dl dd {
+margin-bottom: 13px;
+margin-left: 13px;
+}
+dl dt {
+font-weight: bold;
+}
+ul {
+margin-top: 0;
+}
+ul li {
+list-style: circle outside;
+}
+ul ul {
+margin-bottom: 0;
+}
+pre, code {
+background-color: #f7f7f7;
+border-radius: 3px;
+color: #333;
+white-space: pre-wrap; 
+}
+pre {
+border-radius: 3px;
+margin: 5px 0px 10px 0px;
+padding: 10px;
+}
+pre:not([class]) {
+background-color: #f7f7f7;
+}
+code {
+font-family: Consolas, Monaco, 'Courier New', monospace;
+font-size: 85%;
+}
+p > code, li > code {
+padding: 2px 0px;
+}
+div.figure {
+text-align: center;
+}
+img {
+background-color: #FFFFFF;
+padding: 2px;
+border: 1px solid #DDDDDD;
+border-radius: 3px;
+border: 1px solid #CCCCCC;
+margin: 0 5px;
+}
+h1 {
+margin-top: 0;
+font-size: 35px;
+line-height: 40px;
+}
+h2 {
+border-bottom: 4px solid #f7f7f7;
+padding-top: 10px;
+padding-bottom: 2px;
+font-size: 145%;
+}
+h3 {
+border-bottom: 2px solid #f7f7f7;
+padding-top: 10px;
+font-size: 120%;
+}
+h4 {
+border-bottom: 1px solid #f7f7f7;
+margin-left: 8px;
+font-size: 105%;
+}
+h5, h6 {
+border-bottom: 1px solid #ccc;
+font-size: 105%;
+}
+a {
+color: #0033dd;
+text-decoration: none;
+}
+a:hover {
+color: #6666ff; }
+a:visited {
+color: #800080; }
+a:visited:hover {
+color: #BB00BB; }
+a[href^="http:"] {
+text-decoration: underline; }
+a[href^="https:"] {
+text-decoration: underline; }
+
+code > span.kw { color: #555; font-weight: bold; } 
+code > span.dt { color: #902000; } 
+code > span.dv { color: #40a070; } 
+code > span.bn { color: #d14; } 
+code > span.fl { color: #d14; } 
+code > span.ch { color: #d14; } 
+code > span.st { color: #d14; } 
+code > span.co { color: #888888; font-style: italic; } 
+code > span.ot { color: #007020; } 
+code > span.al { color: #ff0000; font-weight: bold; } 
+code > span.fu { color: #900; font-weight: bold; } 
+code > span.er { color: #a61717; background-color: #e3d2d2; } 
+</style>
 
 
 
@@ -142,10 +342,19 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 
 
 <div class="sourceCode" id="cb1"><pre class="sourceCode r"><code class="sourceCode r"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">library</span>(systemfonts)</span></code></pre></div>
-<p>Most of the functionality in systemfonts is intended to be used from compiled code to help e.g. graphic devices to resolve font specifications to a font file prior to rendering. systemfonts provide key functionality to get called at the C level by putting systemfonts in the <code>LinkingTo</code> field in the description and adding <code>#include &lt;systemfonts.h&gt;</code> to your C code. Make sure systemfonts is loaded before using it, e.g. by having <code>match_font()</code> imported into your package namespace. The different functionality will be discussed below</p>
+<p>Most of the functionality in systemfonts is intended to be used from
+compiled code to help e.g. graphic devices to resolve font
+specifications to a font file prior to rendering. systemfonts provide
+key functionality to get called at the C level by putting systemfonts in
+the <code>LinkingTo</code> field in the description and adding
+<code>#include &lt;systemfonts.h&gt;</code> to your C code. Make sure
+systemfonts is loaded before using it, e.g. by having
+<code>match_font()</code> imported into your package namespace. The
+different functionality will be discussed below</p>
 <div id="font-matching" class="section level2">
 <h2>Font matching</h2>
-<p>The C equivalent of the <code>match_font()</code> R function is <code>locate_font()</code> with the following signature:</p>
+<p>The C equivalent of the <code>match_font()</code> R function is
+<code>locate_font()</code> with the following signature:</p>
 <div class="sourceCode" id="cb2"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> locate_font<span class="op">(</span></span>
 <span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span> <span class="op">*</span>family<span class="op">,</span> </span>
 <span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> italic<span class="op">,</span> </span>
@@ -153,15 +362,29 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a>  <span class="dt">char</span> <span class="op">*</span>path<span class="op">,</span> </span>
 <span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> max_path_length</span>
 <span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
-<p>It takes a UTF-8 encoded string with the font family name, an int setting both italic and bold styles along with a char pointer to be filled with the located path and the maximum length it can hold. The return value is an int giving the index of the font in the font file.</p>
-<p>With the advent of systemfonts 0.3.0 fonts can now also have OpenType features attached to them through the use of <code>register_font()</code> or <code>register_variant()</code>. If you wish to support such features you can use an alternative to the above:</p>
+<p>It takes a UTF-8 encoded string with the font family name, an int
+setting both italic and bold styles along with a char pointer to be
+filled with the located path and the maximum length it can hold. The
+return value is an int giving the index of the font in the font
+file.</p>
+<p>With the advent of systemfonts 0.3.0 fonts can now also have OpenType
+features attached to them through the use of
+<code>register_font()</code> or <code>register_variant()</code>. If you
+wish to support such features you can use an alternative to the
+above:</p>
 <div class="sourceCode" id="cb3"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>FontSettings locate_font_with_features<span class="op">(</span></span>
 <span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span> <span class="op">*</span>family<span class="op">,</span> </span>
 <span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> italic<span class="op">,</span> </span>
 <span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> bold</span>
 <span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
-<p>The returned <code>FontSettings</code> struct will contain both the font location and index along with any OpenType feature settings. The struct (along with its <code>FontFeature</code> struct dependency) is shown below and is pretty self-documenting.</p>
-<p>Do not cache the <code>FontSettings</code> struct as the <code>features</code> array may be cleared at any time after the call has ended. systemfonts itself takes care of caching so this is not something you should be concerned with in your code.</p>
+<p>The returned <code>FontSettings</code> struct will contain both the
+font location and index along with any OpenType feature settings. The
+struct (along with its <code>FontFeature</code> struct dependency) is
+shown below and is pretty self-documenting.</p>
+<p>Do not cache the <code>FontSettings</code> struct as the
+<code>features</code> array may be cleared at any time after the call
+has ended. systemfonts itself takes care of caching so this is not
+something you should be concerned with in your code.</p>
 <div class="sourceCode" id="cb4"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="kw">struct</span> FontFeature <span class="op">{</span></span>
 <span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">char</span> feature<span class="op">[</span><span class="dv">4</span><span class="op">];</span></span>
 <span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> setting<span class="op">;</span></span>
@@ -175,7 +398,8 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 </div>
 <div id="glyph-metrics" class="section level2">
 <h2>Glyph metrics</h2>
-<p>The C equivalent of <code>glyph_info()</code> is <code>glyph_metrics()</code> with the following signature:</p>
+<p>The C equivalent of <code>glyph_info()</code> is
+<code>glyph_metrics()</code> with the following signature:</p>
 <div class="sourceCode" id="cb5"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> glyph_metrics<span class="op">(</span></span>
 <span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">uint32_t</span> code<span class="op">,</span> </span>
 <span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> fontfile<span class="op">,</span> </span>
@@ -186,11 +410,17 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a>  <span class="dt">double</span><span class="op">*</span> descent<span class="op">,</span> </span>
 <span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a>  <span class="dt">double</span><span class="op">*</span> width</span>
 <span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
-<p>It takes the glyph to measure as an int giving the UTF code of the glyph, along with a fontfile and index to identify the font to measure with. Further it takes a size in pt and a resolution in ppi. It will write the ascent, descent, and width in pts to the pointers passed in, and return <code>0</code> if the operation was successful.</p>
+<p>It takes the glyph to measure as an int giving the UTF code of the
+glyph, along with a fontfile and index to identify the font to measure
+with. Further it takes a size in pt and a resolution in ppi. It will
+write the ascent, descent, and width in pts to the pointers passed in,
+and return <code>0</code> if the operation was successful.</p>
 </div>
 <div id="string-width" class="section level2">
 <h2>String width</h2>
-<p>The C equivalent of the <code>string_width()</code> R function is also called <code>string_width()</code> with the following signature:</p>
+<p>The C equivalent of the <code>string_width()</code> R function is
+also called <code>string_width()</code> with the following
+signature:</p>
 <div class="sourceCode" id="cb6"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>string_width<span class="op">(</span></span>
 <span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> string<span class="op">,</span> </span>
 <span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> fontfile<span class="op">,</span> </span>
@@ -200,11 +430,22 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb6-7"><a href="#cb6-7" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> include_bearing<span class="op">,</span> </span>
 <span id="cb6-8"><a href="#cb6-8" aria-hidden="true" tabindex="-1"></a>  <span class="dt">double</span><span class="op">*</span> width</span>
 <span id="cb6-9"><a href="#cb6-9" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
-<p>This function calculates the width of a string, ignoring any newlines (these are automatically being handled by the graphic engine). It takes a UTF-8 encoded string, along with a fontfile and index identifying the font to use for the calculation. It also take a size in pt and a res in ppi for setting the size. In addition it takes an include_bearing flag to control whether the bearings of the first and last character should be taken into account (this is recommended by the graphic engine). It will write the width in pts to the passed in pointer and return 0 if successful.</p>
+<p>This function calculates the width of a string, ignoring any newlines
+(these are automatically being handled by the graphic engine). It takes
+a UTF-8 encoded string, along with a fontfile and index identifying the
+font to use for the calculation. It also take a size in pt and a res in
+ppi for setting the size. In addition it takes an include_bearing flag
+to control whether the bearings of the first and last character should
+be taken into account (this is recommended by the graphic engine). It
+will write the width in pts to the passed in pointer and return 0 if
+successful.</p>
 </div>
 <div id="string-shape" class="section level2">
 <h2>String shape</h2>
-<p>A parred down version of <code>shape_string()</code> is accessible at the C level with <code>string_shape()</code>. It behaves more or less like <code>string_width()</code> above, but instead returns the location to write each glyph at relative to a (0, 0) origin.</p>
+<p>A parred down version of <code>shape_string()</code> is accessible at
+the C level with <code>string_shape()</code>. It behaves more or less
+like <code>string_width()</code> above, but instead returns the location
+to write each glyph at relative to a (0, 0) origin.</p>
 <div class="sourceCode" id="cb7"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>string_shape<span class="op">(</span></span>
 <span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> string<span class="op">,</span> </span>
 <span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> fontfile<span class="op">,</span> </span>
@@ -215,11 +456,30 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb7-8"><a href="#cb7-8" aria-hidden="true" tabindex="-1"></a>  <span class="dt">double</span><span class="op">*</span> y<span class="op">,</span> </span>
 <span id="cb7-9"><a href="#cb7-9" aria-hidden="true" tabindex="-1"></a>  <span class="dt">unsigned</span> <span class="dt">int</span> max_length</span>
 <span id="cb7-10"><a href="#cb7-10" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
-<p><code>string_shape()</code> behaves more or less like <code>string_width()</code> above, but instead returns the location to write each glyph at relative to a (0, 0) origin. It takes a UTF-8 encoded string, along with a fontfile and index identifying the font to use for the calculation. It also take a size in pt and a res in ppi for setting the size. In addition it takes an include_bearing flag to control whether the bearings of the first and last character should be taken into account (this is recommended by the graphic engine). It will write the x and y location of each glyph in pts to the passed in arrays, stopping before the provided max_length and return 0 if successful.</p>
+<p><code>string_shape()</code> behaves more or less like
+<code>string_width()</code> above, but instead returns the location to
+write each glyph at relative to a (0, 0) origin. It takes a UTF-8
+encoded string, along with a fontfile and index identifying the font to
+use for the calculation. It also take a size in pt and a res in ppi for
+setting the size. In addition it takes an include_bearing flag to
+control whether the bearings of the first and last character should be
+taken into account (this is recommended by the graphic engine). It will
+write the x and y location of each glyph in pts to the passed in arrays,
+stopping before the provided max_length and return 0 if successful.</p>
 </div>
 <div id="retrieving-cached-freetype-face" class="section level2">
 <h2>Retrieving cached freetype face</h2>
-<p>A heavy part of text layouting is reading and parsing font files. systemfonts contains its own cache to make sure that parsing is kept at a minimum. If you want to use this cache to load and cache freetype face object (FT_Face) you can use <code>get_cached_face()</code>. This resides in a separate header (<code>systemfonts-ft.h</code>) because it requires FreeType to be linked in your package, which the rest of the C api does not. It will look in the cache for a face and size that matches your request and return that if found. If not, it will load it for you and add it to the cache, before returning it to you. <code>get_cached_face()</code> sets the passed in error pointer to 0 if successful.</p>
+<p>A heavy part of text layouting is reading and parsing font files.
+systemfonts contains its own cache to make sure that parsing is kept at
+a minimum. If you want to use this cache to load and cache freetype face
+object (FT_Face) you can use <code>get_cached_face()</code>. This
+resides in a separate header (<code>systemfonts-ft.h</code>) because it
+requires FreeType to be linked in your package, which the rest of the C
+api does not. It will look in the cache for a face and size that matches
+your request and return that if found. If not, it will load it for you
+and add it to the cache, before returning it to you.
+<code>get_cached_face()</code> sets the passed in error pointer to 0 if
+successful.</p>
 <div class="sourceCode" id="cb8"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>get_cached_face<span class="op">(</span></span>
 <span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> fontfile<span class="op">,</span> </span>
 <span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> index<span class="op">,</span> </span>
@@ -227,11 +487,22 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 <span id="cb8-5"><a href="#cb8-5" aria-hidden="true" tabindex="-1"></a>  <span class="dt">double</span> res<span class="op">,</span></span>
 <span id="cb8-6"><a href="#cb8-6" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> <span class="op">*</span> error</span>
 <span id="cb8-7"><a href="#cb8-7" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
-<p>Freetype uses reference counting to keep track of objects and the count is increased by a call to <code>get_cached_face()</code>. It is the responsiblity of the caller to decrease it once the face is no longer needed using <code>FT_Done_Face()</code>.</p>
+<p>Freetype uses reference counting to keep track of objects and the
+count is increased by a call to <code>get_cached_face()</code>. It is
+the responsiblity of the caller to decrease it once the face is no
+longer needed using <code>FT_Done_Face()</code>.</p>
 </div>
 <div id="font-fallback" class="section level2">
 <h2>Font fallback</h2>
-<p>When rendering text it is not given that all the requested characters have a glyph in the given font. While one can elect to render a “missing glyph” glyph (often either an empty square or a questionmark in a tilted square) a better approach is often to find a font substitute that does contain the character and use that for rendering it. This function allows you to find a fallback font for a given string and font. The string should be stripped of characters that you already know how to render. The fallback font is returned as a FontSettings object, though features are always empty.</p>
+<p>When rendering text it is not given that all the requested characters
+have a glyph in the given font. While one can elect to render a “missing
+glyph” glyph (often either an empty square or a questionmark in a tilted
+square) a better approach is often to find a font substitute that does
+contain the character and use that for rendering it. This function
+allows you to find a fallback font for a given string and font. The
+string should be stripped of characters that you already know how to
+render. The fallback font is returned as a FontSettings object, though
+features are always empty.</p>
 <div class="sourceCode" id="cb9"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>FontSettings get_fallback<span class="op">(</span></span>
 <span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> string<span class="op">,</span></span>
 <span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> path<span class="op">,</span></span>
@@ -240,7 +511,11 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 </div>
 <div id="font-weight" class="section level2">
 <h2>Font Weight</h2>
-<p>When encoding text with CSS it may be necessary to know the exact weight of the font given by a file so that it may be reflected in the style sheet. This function takes a path and an index and returns the weight (100-900 in steps of 100) or 0 if it is undefined by the font.</p>
+<p>When encoding text with CSS it may be necessary to know the exact
+weight of the font given by a file so that it may be reflected in the
+style sheet. This function takes a path and an index and returns the
+weight (100-900 in steps of 100) or 0 if it is undefined by the
+font.</p>
 <div class="sourceCode" id="cb10"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> get_font_weight<span class="op">(</span></span>
 <span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> path<span class="op">,</span></span>
 <span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> index</span>
@@ -248,7 +523,11 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 </div>
 <div id="family-name" class="section level2">
 <h2>Family name</h2>
-<p>It may be beneficial to know the family name from a given path and index into a font. This can be obtained with <code>get_font_family()</code> which will write the name to the provided <code>char*</code> argument. It will return 0 if it was somehow unsuccessful.</p>
+<p>It may be beneficial to know the family name from a given path and
+index into a font. This can be obtained with
+<code>get_font_family()</code> which will write the name to the provided
+<code>char*</code> argument. It will return 0 if it was somehow
+unsuccessful.</p>
 <div class="sourceCode" id="cb11"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="dt">int</span> get_font_family<span class="op">(</span></span>
 <span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">char</span><span class="op">*</span> path<span class="op">,</span></span>
 <span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> index<span class="op">,</span></span>
@@ -258,7 +537,10 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
 </div>
 <div id="emoji-location" class="section level2">
 <h2>Emoji location</h2>
-<p>Figuring out which character in a string should be treated as an emoji is non-trivial due to the existence of emojis with text representation default etc. systemfonts allow you to get the embedding of emojis in a string based on the correct rules.</p>
+<p>Figuring out which character in a string should be treated as an
+emoji is non-trivial due to the existence of emojis with text
+representation default etc. systemfonts allow you to get the embedding
+of emojis in a string based on the correct rules.</p>
 <div class="sourceCode" id="cb12"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="dt">void</span> detect_emoji_embedding<span class="op">(</span></span>
 <span id="cb12-2"><a href="#cb12-2" aria-hidden="true" tabindex="-1"></a>  <span class="dt">const</span> <span class="dt">uint32_t</span><span class="op">*</span> string<span class="op">,</span> </span>
 <span id="cb12-3"><a href="#cb12-3" aria-hidden="true" tabindex="-1"></a>  <span class="dt">int</span> n<span class="op">,</span> </span>
diff --git a/src/unix/FontManagerLinux.cpp b/src/unix/FontManagerLinux.cpp
index 6b34dfc..7bb188c 100755
--- a/src/unix/FontManagerLinux.cpp
+++ b/src/unix/FontManagerLinux.cpp
@@ -226,7 +226,7 @@ FontDescriptor *findFont(FontDescriptor *desc) {
 
   FcResult result;
   FcPattern *font = FcFontMatch(NULL, pattern, &result);
-  FontDescriptor *res = createFontDescriptor(font);
+  FontDescriptor *res = font ? createFontDescriptor(font) : NULL;
 
   FcPatternDestroy(pattern);
   FcPatternDestroy(font);
@@ -263,7 +263,7 @@ FontDescriptor *substituteFont(char *postscriptName, char *string) {
   // find the best match font
   FcResult result;
   FcPattern *font = FcFontMatch(NULL, pattern, &result);
-  FontDescriptor *res = createFontDescriptor(font);
+  FontDescriptor *res = font ? createFontDescriptor(font) : NULL;
 
   FcPatternDestroy(pattern);
   FcPatternDestroy(font);

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/d4/e82181b6719c5ce5f24282cd8c56dee8154b34.debug

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/5f/8a54c8fa329d64b3f2670d25f5cc235bcc8ea3.debug

Control files of package r-cran-systemfonts: lines which differ (wdiff format)

  • Depends: r-base-core (>= 4.2.2.20221110-2), 4.2.2.20221110-1), r-api-4.0, r-cran-cpp11 (>= 0.2.1), libc6 (>= 2.14), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libgcc-s1 (>= 3.0), libstdc++6 (>= 11)

Control files of package r-cran-systemfonts-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 5f8a54c8fa329d64b3f2670d25f5cc235bcc8ea3 d4e82181b6719c5ce5f24282cd8c56dee8154b34

More details

Full run details