Last Modified Date: 01 Feb, 2024 15:58
This release is a mixture of new development and fixes, almost all inspired by customer support requests, the wide range of which tells us that Mako is being put to work in lots of different ways.
Solutions for specific support issues included in this release are labelled MAKOSUP-XXXXX. The link is live and can be followed to the (new cloud-based) Mako support portal but will work only for the customer who reported it.
MAKOSUP-11289 Converting PDF document to PDF/X-1a using Mako 7.1.0
This was caused by a bug that is now fixed.
MAKOSUP-11292 Problem rasterizing pdf.
When generating an alpha channel, an exception was thrown when a separation colour space was used with a process component as the name. Now fixed.
MAKOSUP-11293 Problem rasterizing PDF
The customer exhibit had an unusual arrangement of separation (spot) colors that caused a rendering issue. Now fixed.
MAKOSUP-11307 Accessing the Page Content causes RIP error
The customer exhibit had a badly broken xref (cross-reference) table, so much so that it prevented Mako’s usual repair function from completing normally. Now fixed.
MAKOSUP-11308 Importing a TIFF results in broken DOM?
The customer exhibit was a TIFF in a Lab colorspace, which until this release Mako did not support. The TIFF input class has now been extended to support Lab, automatically generating a Lab colorspace with a D65 whitepoint.
MAKOSUP-11309 Showing/Flattening annotations fails
This issue was caused by the lack of annotation ‘appearances’, content to provide a visual for display or printing. Mako can generate appearances for common annotation types, but in this case, template content for the annotation types used was absent. This is rectified in this release and the customer exhibit processes normally.
A new method,
MAKOSUP-11316 Problem rasterizing PDF in CMYK color space
This was an alpha channel generation issue that is fixed in this release.
MAKOSUP-11311 Segmentation fault on Alpine Linux
A previous change to Mako led to a situation where stack space was exhausted on platforms with a small default stack size, as is the case with Alpine Linux. Now fixed.
MAKOSUP-11323 Mako fails to render PDF/X-1
The issue with the customer file was traced to a floating-point error when processing a Type 1 Shading. Now fixed.
MAKOSUP-11333 Access violation during deallocation of IJawsRenderer
Fixing a bug in the FreeType library solved this problem.
New features and improvements
MAKOSUP-11252 Overprint ignored by renderSeparations if an ICC profile is used
The customer needed to render to a CMYK ICC profile but to treat DeviceCMYK as colors on the device, so that overprint would not be ignored. To simplify this process, a new API is added:
In the renderer, when a Device color space (DeviceRGB, DeviceCMYK, or DeviceGray) is seen, it is interpreted according to the intercept colour space set in the IColorManager instance via the
This may not always be desirable. Consider the case where a CMYK ICC profile is used as the output color space for rendering. If the DeviceCMYK intercept does not match that profile, then any DeviceCMYK content would be color converted from the intercept color space to the output profile.
This behavior is contrary to what would ordinarily be seen in a standalone RIP where it is expected that if the output is a CMYK profile, then any DeviceCMYK content would be passed through without conversion.
Although the required result can be achieved in Mako by using
When ignoreDeviceintercept is set, then the renderer will do the following:
A different method for vector flattening to maintain Beziers, strokes, and text
This is the final major improvement to the vector-based transparency flattener built into Mako (
Add an option to set any fonts that take part in vector flattening to embed on output
A new IRendererTransform API,
Support version of ILayoutFontWeight that accepts a range of weights
The purpose of this API is to make it possible to write cross-platform code that can pick a font based on typographic properties alone.
Duplicate glyph names when adding to CFF font.
Improvement to ensure there is no duplication of glyph names when processing CFF (Compact Font Format) information, in OpenType fonts.
Correct code hint for ILayoutTextRun::create()
An error in the Doxygen comments for this method are corrected.
Support IPDFPageInserter and IPDFPageExtractor classes in C#, Java & Python
These classes were added in an earlier version of Mako but until now were not available in the C#, Java and Python APIs. A simple C# example can be found in the Knowledge Base.
Enable IJawsRenderer::renderSeparations to ignore prescribed spot components
Until now, if you wanted to exclude a spot from the process separations but had no use for the spot separation, it was necessary to produce one then throw it away.
The new parameter is
Add API to CInkInfo to set the inkName
In C++, it’s possible to create an instance of the
As part of work aimed at optimizing PDFs, significant improvements have been made to the
In practice, it was found that it couldn’t always detect equivalency where functionally equivalent forms are used in different locations or under different matrix translations. The changes in this release overcome this limitation, improving optimization of the PDF still further. Such optimization is highly effective for long labels and packaging jobs with a high occurrence of repeated content.
ILayoutFont: Improve performance when finding fonts.
The font discovery APIs in the ILayout class revealed some poor performance when scanning a system for fonts. This change addresses that issue leading to much improved performance of multiple font queries.
Add default font specification to ILayoutParagraph
New parameters are now available when creating an
MAKOSUP-11282 Support for Windows ARM64 (C++)
In response to a customer request, we have added a Windows ARM64 build to the Mako distributions. Both dynamically- and statically-linked builds are now available, complete with NuGet packages.
MAKOSUP-11317 Add macOS to cross-platform JAR
To simplify deployment, a customer requested a single JAR with both Windows and Linux Java libraries for Mako. This was included in the Mako 7.1.0 release. Now another customer has asked for the same, with the addition of macOS. This is delivered in this release and can be found in the SWIG/CrossPlatformJAR folder. As the macOS library is a universal binary (ARM & Intel) and therefore quite large, two configurations are provided: the original Windows & Linux combination and another with Windows, Linux & macOS.
Update Alpine version to 3.17
A customer issue led us to consider updating the version of Alpine Linux with which we build Mako. This we have done in this release, updating from v3.9 (which is out of support) to v3.17.
Remove the IDOMCharPathGroup::get/setBlendMode() methods
These methods are removed as they don’t work as intended and applying a transparency group has the same effect.
Update .NET dependency in SWIG builds
Remove the IJawsRenderer::renderAntiAliasedToFrameBuffer API
This API was deprecated in Mako 7.1.0 and is removed in this release.
MAKO Version 7.2.0 is built for the following platforms:
- Linux (for Debian-based distributions, eg Ubuntu 22.04 LTS, Mint)
- Linux (for Debian Bullseye)
- Linux (for Debian Buster)
- Linux (for Alpine Linux v3.17)
- Linux (Centos)
- Linux (Red Hat Enterprise v7.0)
- Linux (Red Hat Enterprise v8.4)
- Linux (for Debian Buster) (arm32v7 for Raspberry Pi)
- Linux (for Debian Bullseye) (arm64v8 for Raspberry Pi)
- Windows (static and dynamic libs, VS 2019 (V142), x86, x64 and ARM64)
- Windows (static and dynamic libs, VS 2017 (V141), x64)
- Windows UWP/WinRT
N.B. The Android build is excluded from this release. Contact Mako support if you need Mako for Android.
Mako supports the following programming languages.
- C++ (Mako is written in C++)
- C# (.Net Core (multiple platforms) and .Net Framework (Windows only))
- Java (built with OpenJDK11 and therefore compatible with later versions.)
- Python (v3.8 / 3.9)
The alternatives to C++ are built using SWIG (www.swig.org) which provides a translation to the native libraries. They found in these distribution folders, found in the SWIG folder:
Cross-platform Java build
The folder SWIG/CrossPlatformJAR contains Java builds that combine the implementations for multiple platforms into a single JAR package, thereby simplifying deployment. The folder contains two combinations, one for Windows & Linux and another for Windows, Linux and macOS. A pre-built sample app (makoconverter.jar) is included.
Mako is available with the ColorLogic CMM, supplied by our Hybrid Group sister company, ColorLogic Gmbh. All builds can be found in the ColorLogic folder. C++ builds are available for Windows, macOS and Linux, and there is also a Windows SWIG build for development with C#, Java or Python that uses the ColorLogic CMM.