<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://www.msweet.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.msweet.org/" rel="alternate" type="text/html" /><updated>2026-04-30T18:33:41+00:00</updated><id>https://www.msweet.org/feed.xml</id><title type="html">Michael R Sweet</title><subtitle>Michael R Sweet&apos;s User Page Repository</subtitle><entry><title type="html">PDFio 1.6.3</title><link href="https://www.msweet.org/blog/2026-04-30-pdfio-1.6.3.html" rel="alternate" type="text/html" title="PDFio 1.6.3" /><published>2026-04-30T00:00:00+00:00</published><updated>2026-04-30T00:00:00+00:00</updated><id>https://www.msweet.org/blog/pdfio-1.6.3</id><content type="html" xml:base="https://www.msweet.org/blog/2026-04-30-pdfio-1.6.3.html"><![CDATA[<p>PDFio 1.6.3 is a bug fix release. Changes include:</p>

<ul>
  <li>Fixed <code class="language-plaintext highlighter-rouge">pdfioPageCopy</code> implementation to not copy the source document’s entire
page tree (Issue #161)</li>
  <li>Fixed AES encryption dictionary name (Issue #163)</li>
  <li>Fixed AES owner key generation (Issue #164)</li>
  <li>Fixed support for empty UTF-16 strings (Issue #165)</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/pdfio/releases/tag/v1.6.3">Download PDFio v1.6.3</a>
<a class="btn btn-primary" href="/pdfio/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="pdfio" /><summary type="html"><![CDATA[PDFio 1.6.3 is a bug fix release. Changes include: Fixed pdfioPageCopy implementation to not copy the source document’s entire page tree (Issue #161) Fixed AES encryption dictionary name (Issue #163) Fixed AES owner key generation (Issue #164) Fixed support for empty UTF-16 strings (Issue #165) Enjoy! Download PDFio v1.6.3 Home Page]]></summary></entry><entry><title type="html">PDFio 1.6.2</title><link href="https://www.msweet.org/blog/2026-02-15-pdfio-1.6.2.html" rel="alternate" type="text/html" title="PDFio 1.6.2" /><published>2026-02-15T00:00:00+00:00</published><updated>2026-02-15T00:00:00+00:00</updated><id>https://www.msweet.org/blog/pdfio-1.6.2</id><content type="html" xml:base="https://www.msweet.org/blog/2026-02-15-pdfio-1.6.2.html"><![CDATA[<p>PDFio 1.6.2 is a bug fix release. Changes include:</p>

<ul>
  <li>Increased the maximum length of a single string to 128k (Issue #146)</li>
  <li>Added missing range checks to <code class="language-plaintext highlighter-rouge">pdfioArrayCopy</code> and <code class="language-plaintext highlighter-rouge">pdfioDictCopy</code>.</li>
  <li>Refactored PDF encryption code to fix unlocking with certain files.</li>
  <li>Improved xref table loop detection (Issue #148)</li>
  <li>Changed how duplicate objects are handled in PDF files (Issue #155)</li>
  <li>Fixed xref reconstruction for objects lacking a <code class="language-plaintext highlighter-rouge">Type</code> value.</li>
  <li>Fixed <code class="language-plaintext highlighter-rouge">pdfioPageOpenStream</code> for indirect <code class="language-plaintext highlighter-rouge">Contents</code> arrays.</li>
  <li>Fixed an error propagation bug when reading too-long values (Issue #146)</li>
  <li>Fixed a bug when converting Unicode characters above plane 0 (issue #159)</li>
  <li>Fixed a Clang warning.</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/pdfio/releases/tag/v1.6.2">Download PDFio v1.6.2</a>
<a class="btn btn-primary" href="/pdfio/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="pdfio" /><summary type="html"><![CDATA[PDFio 1.6.2 is a bug fix release. Changes include: Increased the maximum length of a single string to 128k (Issue #146) Added missing range checks to pdfioArrayCopy and pdfioDictCopy. Refactored PDF encryption code to fix unlocking with certain files. Improved xref table loop detection (Issue #148) Changed how duplicate objects are handled in PDF files (Issue #155) Fixed xref reconstruction for objects lacking a Type value. Fixed pdfioPageOpenStream for indirect Contents arrays. Fixed an error propagation bug when reading too-long values (Issue #146) Fixed a bug when converting Unicode characters above plane 0 (issue #159) Fixed a Clang warning. Enjoy! Download PDFio v1.6.2 Home Page]]></summary></entry><entry><title type="html">HTMLDOC 1.9.23</title><link href="https://www.msweet.org/blog/2026-01-28-htmldoc-1.9.23.html" rel="alternate" type="text/html" title="HTMLDOC 1.9.23" /><published>2026-01-28T00:00:00+00:00</published><updated>2026-01-28T00:00:00+00:00</updated><id>https://www.msweet.org/blog/htmldoc-1.9.23</id><content type="html" xml:base="https://www.msweet.org/blog/2026-01-28-htmldoc-1.9.23.html"><![CDATA[<p>HTMLDOC 1.9.23 is a bug fix release.  Changes include:</p>

<ul>
  <li>Fixed a regression in list handling that caused a crash for empty list items (Issue #553)</li>
  <li>Fixed a regression in the number of rendered table of contents levels in PDF and PostScript output (Issue #554)</li>
</ul>

<p>Binaries are available from Github for Windows 10+ and macOS 11+, and through the Snapcraft store for Linux.</p>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/htmldoc/releases/tag/v1.9.23">Download HTMLDOC 1.9.23</a>
<a class="btn btn-default" href="https://snapcraft.io/htmldoc">Install HTMLDOC 1.9.23 Snap</a>
<a class="btn btn-default" href="/htmldoc/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="htmldoc" /><summary type="html"><![CDATA[HTMLDOC 1.9.23 is a bug fix release. Changes include: Fixed a regression in list handling that caused a crash for empty list items (Issue #553) Fixed a regression in the number of rendered table of contents levels in PDF and PostScript output (Issue #554) Binaries are available from Github for Windows 10+ and macOS 11+, and through the Snapcraft store for Linux. Enjoy! Download HTMLDOC 1.9.23 Install HTMLDOC 1.9.23 Snap Home Page]]></summary></entry><entry><title type="html">What is a Security Bug?</title><link href="https://www.msweet.org/blog/2026-01-13-what-is-a-security-bug.html" rel="alternate" type="text/html" title="What is a Security Bug?" /><published>2026-01-13T00:00:00+00:00</published><updated>2026-01-13T00:00:00+00:00</updated><id>https://www.msweet.org/blog/what-is-a-security-bug</id><content type="html" xml:base="https://www.msweet.org/blog/2026-01-13-what-is-a-security-bug.html"><![CDATA[<p>I’ve had the privilege of working with a lot of security researchers throughout
my career.  Every one of them has been passionate about their work and the
issues they report, and my work has greatly benefitted from their contributions.</p>

<p>Unfortunately, the software security industry has created an environment where
CVEs (Common Vulnerabilities and Exposures) have become an economic driver.
Researchers seem to increasingly need published CVEs or bug bounties to justify
the time they spend trying to break software in new and interesting ways.</p>

<p>This has predictably led to more software bugs being reported as critical
security vulnerabilities, with push-back and frustration from developers when
those bugs are either not exploitable or not in that software at all!  In
addition, many issues are discovered and reported automatically (“AI”,
“fuzzing”, etc.) without sufficient investigation/analysis by the reporter.
Finally, security updates trigger an emergency response for everyone involved,
causing further disruption to the software development process.  Thus, it is
important to clearly identify which bugs rate a CVE and which ones are ordinary
bugs.</p>

<!--more-->

<h2 id="bugs-vs-vulnerabilities">Bugs vs. Vulnerabilities</h2>

<p>CVE defines a vulnerability as a weakness in software or hardware components
<em>that can be exploited</em>.  In addition, there is a
<a href="https://cwe.mitre.org/">list of common weaknesses</a> that provide guidance on which bugs get CVEs
and which bugs don’t, and you are expected to connect a weakness to an actual,
exploitable vulnerability or exposure before filing a CVE.  Unfortunately, CWEs
are often applied overly broadly to justify why a bug should be treated as the
most serious of security issues, e.g.:</p>

<ul>
  <li><em>This critical issue exposes CWE-999 and must be assigned a CVE or given a bug bounty!</em></li>
</ul>

<p>One common over-application of CWEs is for so-called Denial of Service (DoS)
vulnerabilities in software that does not provide a service - you can’t deny
something that doesn’t exist.  I’ve had reporters argue that, “my server uses
this library and the bug in this library causes a denial of service for my
server”, however it is the responsibility of the <em>server</em> to protect against
DoS attacks, not a subordinate library, because only the server knows what is an
appropriate use of memory, CPU, time, and other resources.</p>

<blockquote>
  <p>Note: I’m not talking about issues that cause a crash in a library due to
buffer overflow/underflow, divide by 0, etc.  While there are ways to mitigate
such risks, those sorts of issues can be exploitable in unpredictable ways and
need to be assigned CVEs for something other than a Denial of Service
vulnerability.  Running out of memory or taking a long time to perform an
operation because you load a large file is not a CVE.</p>
</blockquote>

<p>I also sometimes see security reports for incorrect API usage such as passing
<code class="language-plaintext highlighter-rouge">NULL</code> pointers where such pointers are not allowed, passing the wrong kinds of
pointers or objects to an API, or using an unstable (private) API.  These are
not vulnerabilities in the API because they are not caused by an attacker but
<em>by the developer</em>.  They are also <em>not exploitable</em> as defined for CVEs,
although the application itself might be exploitable.</p>

<p>Identifying weaknesses is important, but so is determining whether a weakness
can be exploited and what the scope of the vulnerability and exposure is.  If a
weakness requires playing a <a href="https://memory-alpha.fandom.com/wiki/Fizzbin">game of Fizzbin</a> or is simply not
exploitable, then it is not a vulnerability and does not get a CVE.</p>

<p>Sometimes a bug is just a bug.</p>]]></content><author><name></name></author><category term="website" /><summary type="html"><![CDATA[I’ve had the privilege of working with a lot of security researchers throughout my career. Every one of them has been passionate about their work and the issues they report, and my work has greatly benefitted from their contributions. Unfortunately, the software security industry has created an environment where CVEs (Common Vulnerabilities and Exposures) have become an economic driver. Researchers seem to increasingly need published CVEs or bug bounties to justify the time they spend trying to break software in new and interesting ways. This has predictably led to more software bugs being reported as critical security vulnerabilities, with push-back and frustration from developers when those bugs are either not exploitable or not in that software at all! In addition, many issues are discovered and reported automatically (“AI”, “fuzzing”, etc.) without sufficient investigation/analysis by the reporter. Finally, security updates trigger an emergency response for everyone involved, causing further disruption to the software development process. Thus, it is important to clearly identify which bugs rate a CVE and which ones are ordinary bugs.]]></summary></entry><entry><title type="html">TTF v1.1.0</title><link href="https://www.msweet.org/blog/2025-12-31-ttf-1.1.0.html" rel="alternate" type="text/html" title="TTF v1.1.0" /><published>2025-12-31T00:00:00+00:00</published><updated>2025-12-31T00:00:00+00:00</updated><id>https://www.msweet.org/blog/ttf-1.1.0</id><content type="html" xml:base="https://www.msweet.org/blog/2025-12-31-ttf-1.1.0.html"><![CDATA[<p>This is a feature release of TTF, a simple C library for using TrueType
and OpenType font files.  Changes include:</p>

<ul>
  <li>Added configure script for better build system compatibility.</li>
  <li>Added <code class="language-plaintext highlighter-rouge">ttfCache</code> functions to access user- and system-installed fonts (Issue #5)</li>
  <li>Added <code class="language-plaintext highlighter-rouge">ttfCreateData</code> function to create a font from a memory buffer.</li>
  <li>Added <code class="language-plaintext highlighter-rouge">ttfContainsChar</code> and <code class="language-plaintext highlighter-rouge">ttfContainsChars</code> functions to determine whether a font contains the necessary characters (Issue #2)</li>
  <li>Added <code class="language-plaintext highlighter-rouge">ttfGetKernedExtents</code> function to get kerned extents (Issue #6)</li>
  <li>Added guards against fonts claiming they have 0 characters.</li>
  <li>Added stddef.h include to ttf.h.</li>
  <li>Added support for more kinds of TrueType/OpenType fonts.</li>
  <li>Fixed range checking in <code class="language-plaintext highlighter-rouge">ttfGetExtents</code> (Issue #9)</li>
  <li>Fixed potential heap/integer overflow issues in the TrueType cmap code.</li>
  <li>Fixed underflow in TrueType cmap code.</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/ttf/releases/tag/v1.1.0">Download TTF v1.1.0</a>
<a class="btn btn-primary" href="/ttf/index.html">Home Page</a>
<a class="btn btn-default" href="https://github.com/michaelrsweet/ttf">Github Project</a></p>]]></content><author><name></name></author><category term="ttf" /><summary type="html"><![CDATA[This is a feature release of TTF, a simple C library for using TrueType and OpenType font files. Changes include: Added configure script for better build system compatibility. Added ttfCache functions to access user- and system-installed fonts (Issue #5) Added ttfCreateData function to create a font from a memory buffer. Added ttfContainsChar and ttfContainsChars functions to determine whether a font contains the necessary characters (Issue #2) Added ttfGetKernedExtents function to get kerned extents (Issue #6) Added guards against fonts claiming they have 0 characters. Added stddef.h include to ttf.h. Added support for more kinds of TrueType/OpenType fonts. Fixed range checking in ttfGetExtents (Issue #9) Fixed potential heap/integer overflow issues in the TrueType cmap code. Fixed underflow in TrueType cmap code. Enjoy! Download TTF v1.1.0 Home Page Github Project]]></summary></entry><entry><title type="html">HTMLDOC 1.9.22</title><link href="https://www.msweet.org/blog/2025-12-28-htmldoc-1.9.22.html" rel="alternate" type="text/html" title="HTMLDOC 1.9.22" /><published>2025-12-28T00:00:00+00:00</published><updated>2025-12-28T00:00:00+00:00</updated><id>https://www.msweet.org/blog/htmldoc-1.9.22</id><content type="html" xml:base="https://www.msweet.org/blog/2025-12-28-htmldoc-1.9.22.html"><![CDATA[<p>HTMLDOC 1.9.22 is a bug fix release.  Changes include:</p>

<ul>
  <li>Added a “–without-http” configure option to build without CUPS HTTP/HTTPS support (Issue #547)</li>
  <li>Updated HTTP/HTTPS support to work with both CUPS 2.x and 3.x.</li>
  <li>Updated the maximum image dimension to prevent integer overflow on 32-bit platforms (Issue #550)</li>
  <li>Updated the HTML parser to correctly report the line number of errors in files with more than 2^32-1 lines (Issue #551)</li>
  <li>Fixed a crash bug with certain markdown files (Issue #548)</li>
  <li>Fixed an unrestricted recursion bug when reading and formatting HTML (Issue #552)</li>
</ul>

<p>Binaries are available from Github for Windows 10+ and macOS 11+, and through the Snapcraft store for Linux.</p>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/htmldoc/releases/tag/v1.9.22">Download HTMLDOC 1.9.22</a>
<a class="btn btn-default" href="https://snapcraft.io/htmldoc">Install HTMLDOC 1.9.22 Snap</a>
<a class="btn btn-default" href="/htmldoc/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="htmldoc" /><summary type="html"><![CDATA[HTMLDOC 1.9.22 is a bug fix release. Changes include: Added a “–without-http” configure option to build without CUPS HTTP/HTTPS support (Issue #547) Updated HTTP/HTTPS support to work with both CUPS 2.x and 3.x. Updated the maximum image dimension to prevent integer overflow on 32-bit platforms (Issue #550) Updated the HTML parser to correctly report the line number of errors in files with more than 2^32-1 lines (Issue #551) Fixed a crash bug with certain markdown files (Issue #548) Fixed an unrestricted recursion bug when reading and formatting HTML (Issue #552) Binaries are available from Github for Windows 10+ and macOS 11+, and through the Snapcraft store for Linux. Enjoy! Download HTMLDOC 1.9.22 Install HTMLDOC 1.9.22 Snap Home Page]]></summary></entry><entry><title type="html">PAPPL v1.4.10</title><link href="https://www.msweet.org/blog/2025-12-26-pappl-1.4.10.html" rel="alternate" type="text/html" title="PAPPL v1.4.10" /><published>2025-12-26T00:00:00+00:00</published><updated>2025-12-26T00:00:00+00:00</updated><id>https://www.msweet.org/blog/pappl-1.4.10</id><content type="html" xml:base="https://www.msweet.org/blog/2025-12-26-pappl-1.4.10.html"><![CDATA[<p>PAPPL v1.4.10 is now available for download and is a bug fix release.  Changes include:</p>

<ul>
  <li>Changed the preferred/first printer URI to use the “ipps” scheme.</li>
  <li>Updated the USB serial number code to better support non-compliant printers such as those from DYMO (Issue #396)</li>
  <li>Now show the default and supported “output-bin” options (Issue #393)</li>
  <li>Now suppress a duplicate ‘auto’ value for “media-source-supported” to work around a bug in the legacy-printer-app (Issue #394)</li>
  <li>Now log the TLS version and cipher suite, when available.</li>
  <li>Now create spool files with read-only permissions.</li>
  <li>Now support setting “media-ready” with the modify sub-command (Issue #395)</li>
  <li>Fixed attribute copying issue from multiple client threads (Issue #390)</li>
  <li>Fixed driver validation for raw printing (Issue #391)</li>
  <li>Fixed PNG looping issue (Issue #398)</li>
  <li>Fixed default IPv6 listener (Issue #401)</li>
  <li>Fixed builds against the latest libcups (Issue #403)</li>
  <li>Fixed a deadlock issue in the web interface (Issue #406)</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/pappl/releases/tag/v1.4.10">Download PAPPL v1.4.10</a>
<a class="btn btn-default" href="/pappl/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="pappl" /><summary type="html"><![CDATA[PAPPL v1.4.10 is now available for download and is a bug fix release. Changes include: Changed the preferred/first printer URI to use the “ipps” scheme. Updated the USB serial number code to better support non-compliant printers such as those from DYMO (Issue #396) Now show the default and supported “output-bin” options (Issue #393) Now suppress a duplicate ‘auto’ value for “media-source-supported” to work around a bug in the legacy-printer-app (Issue #394) Now log the TLS version and cipher suite, when available. Now create spool files with read-only permissions. Now support setting “media-ready” with the modify sub-command (Issue #395) Fixed attribute copying issue from multiple client threads (Issue #390) Fixed driver validation for raw printing (Issue #391) Fixed PNG looping issue (Issue #398) Fixed default IPv6 listener (Issue #401) Fixed builds against the latest libcups (Issue #403) Fixed a deadlock issue in the web interface (Issue #406) Enjoy! Download PAPPL v1.4.10 Home Page]]></summary></entry><entry><title type="html">PDFio 1.6.1</title><link href="https://www.msweet.org/blog/2025-12-26-pdfio-1.6.1.html" rel="alternate" type="text/html" title="PDFio 1.6.1" /><published>2025-12-26T00:00:00+00:00</published><updated>2025-12-26T00:00:00+00:00</updated><id>https://www.msweet.org/blog/pdfio-1.6.1</id><content type="html" xml:base="https://www.msweet.org/blog/2025-12-26-pdfio-1.6.1.html"><![CDATA[<p>PDFio 1.6.1 is a bug fix release. Changes include:</p>

<ul>
  <li>Added missing input checking to <code class="language-plaintext highlighter-rouge">pdfioFileCreateFontObjFromBase</code> function.</li>
  <li>Updated support for UTF-16 strings (Issue #141)</li>
  <li>Updated Xcode project to use installed PNG library.</li>
  <li>Fixed decryption of PDF files using an Encrypt dictionary instead of an
indirect reference (Issue #139)</li>
  <li>Fixed character range checking in a TTF support function.</li>
  <li>Fixed some clang warnings.</li>
  <li>Fixed the generated pkg-config file.</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/pdfio/releases/tag/v1.6.1">Download PDFio v1.6.1</a>
<a class="btn btn-primary" href="/pdfio/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="pdfio" /><summary type="html"><![CDATA[PDFio 1.6.1 is a bug fix release. Changes include: Added missing input checking to pdfioFileCreateFontObjFromBase function. Updated support for UTF-16 strings (Issue #141) Updated Xcode project to use installed PNG library. Fixed decryption of PDF files using an Encrypt dictionary instead of an indirect reference (Issue #139) Fixed character range checking in a TTF support function. Fixed some clang warnings. Fixed the generated pkg-config file. Enjoy! Download PDFio v1.6.1 Home Page]]></summary></entry><entry><title type="html">StringsUtil v1.2</title><link href="https://www.msweet.org/blog/2025-12-19-stringsutil-1.2.html" rel="alternate" type="text/html" title="StringsUtil v1.2" /><published>2025-12-19T00:00:00+00:00</published><updated>2025-12-19T00:00:00+00:00</updated><id>https://www.msweet.org/blog/stringsutil-1.2</id><content type="html" xml:base="https://www.msweet.org/blog/2025-12-19-stringsutil-1.2.html"><![CDATA[<p>StringsUtil v1.2 is now available and is a bug fix release.  Changes include:</p>

<ul>
  <li>Added <code class="language-plaintext highlighter-rouge">-v</code> option to <code class="language-plaintext highlighter-rouge">stringsutil report</code> sub-command to show unlocalized strings.</li>
  <li>Added Windows API support to the <code class="language-plaintext highlighter-rouge">sfSetLocale</code> function.</li>
  <li>Updated the output from <code class="language-plaintext highlighter-rouge">stringsutil translate</code> to better show progress.</li>
  <li>Updated code to work with latest CUPS 2.5/3.0.</li>
  <li>Fixed a crash bug in <code class="language-plaintext highlighter-rouge">stringsutil report</code> when checking format strings.</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/stringsutil/releases/tag/v1.2">Download StringsUtil v1.2</a>
<a class="btn btn-primary" href="/stringsutil/index.html">Home Page</a>
<a class="btn btn-default" href="https://github.com/michaelrsweet/stringsutil">Github Project</a></p>]]></content><author><name></name></author><category term="stringsutil" /><summary type="html"><![CDATA[StringsUtil v1.2 is now available and is a bug fix release. Changes include: Added -v option to stringsutil report sub-command to show unlocalized strings. Added Windows API support to the sfSetLocale function. Updated the output from stringsutil translate to better show progress. Updated code to work with latest CUPS 2.5/3.0. Fixed a crash bug in stringsutil report when checking format strings. Enjoy! Download StringsUtil v1.2 Home Page Github Project]]></summary></entry><entry><title type="html">PDFio 1.6.0</title><link href="https://www.msweet.org/blog/2025-10-06-pdfio-1.6.0.html" rel="alternate" type="text/html" title="PDFio 1.6.0" /><published>2025-10-06T00:00:00+00:00</published><updated>2025-10-06T00:00:00+00:00</updated><id>https://www.msweet.org/blog/pdfio-1.6.0</id><content type="html" xml:base="https://www.msweet.org/blog/2025-10-06-pdfio-1.6.0.html"><![CDATA[<p>PDFio 1.6.0 is a feature release. Changes include:</p>

<ul>
  <li>Added generation of XMP metadata when writing PDFs (Issue #103)</li>
  <li>Added “standard” <code class="language-plaintext highlighter-rouge">PDFIO_CS_CGATS001</code> color space for non-device CMYK (Issue #104)</li>
  <li>Added CMYK JPEG support with embedded ICC profiles or using the CGATS001 profile (Issue #104)</li>
  <li>Added <code class="language-plaintext highlighter-rouge">pdfioFileAddOutputIntent</code> function to adding output intent information to a PDF file (Issue #104)</li>
  <li>Added explicit support for warning messages (Issue #118)</li>
  <li>Added <code class="language-plaintext highlighter-rouge">pdfioFileCreateFontObjFromData</code> function for embedding fonts in memory (Issue #120)</li>
  <li>Added support for specifying PDF/A versions for created PDF files (Issue #122)</li>
  <li>Added <code class="language-plaintext highlighter-rouge">pdfioContentBeginMarked</code> and <code class="language-plaintext highlighter-rouge">pdfioContentEndMarked</code> functions for creating tagged PDF content (Issue #123)</li>
  <li>Added <code class="language-plaintext highlighter-rouge">pdfioFileGetLanguage</code> and <code class="language-plaintext highlighter-rouge">pdfioFileSetLanguage</code> functions for getting and setting the default/primary language of a PDF file (Issue #124)</li>
  <li>Now add default grayscale, RGB, and CMYK profile resources to pages as needed (Issue #104)</li>
  <li>Fixed unsupported filter error (Issue #130)</li>
  <li>Fixed EOF comment written to the PDF (Issue #136)</li>
  <li>Fixed TTF cmap underflow error.</li>
  <li>Fixed some Clang warnings.</li>
</ul>

<p>Enjoy!</p>

<p><a class="btn btn-primary" href="https://github.com/michaelrsweet/pdfio/releases/tag/v1.6.0">Download PDFio v1.6.0</a>
<a class="btn btn-primary" href="/pdfio/index.html">Home Page</a></p>]]></content><author><name></name></author><category term="pdfio" /><summary type="html"><![CDATA[PDFio 1.6.0 is a feature release. Changes include: Added generation of XMP metadata when writing PDFs (Issue #103) Added “standard” PDFIO_CS_CGATS001 color space for non-device CMYK (Issue #104) Added CMYK JPEG support with embedded ICC profiles or using the CGATS001 profile (Issue #104) Added pdfioFileAddOutputIntent function to adding output intent information to a PDF file (Issue #104) Added explicit support for warning messages (Issue #118) Added pdfioFileCreateFontObjFromData function for embedding fonts in memory (Issue #120) Added support for specifying PDF/A versions for created PDF files (Issue #122) Added pdfioContentBeginMarked and pdfioContentEndMarked functions for creating tagged PDF content (Issue #123) Added pdfioFileGetLanguage and pdfioFileSetLanguage functions for getting and setting the default/primary language of a PDF file (Issue #124) Now add default grayscale, RGB, and CMYK profile resources to pages as needed (Issue #104) Fixed unsupported filter error (Issue #130) Fixed EOF comment written to the PDF (Issue #136) Fixed TTF cmap underflow error. Fixed some Clang warnings. Enjoy! Download PDFio v1.6.0 Home Page]]></summary></entry></feed>