Skip to main content
Skip table of contents

Mako 6.3.1 Release Notes



Introduction

This is a maintenance release that includes identifiable support issues, labeled MAKOSUP-XXXXX.

Issues fixed

MAKO-3656

MAKOSUP-10839 Missing objects when rendering a file

A character was being omitted from the output due to an optimization of ROP (raster operations) code. Now fixed.

MAKO-3681

MAKOSUP-10815 Some space characters not extracted

It is usual for text in PDFs to contain no space characters, as spaces between words is created by advancing from the last character in a word a greater distance than that found between characters of the preceding word. IPageLayout employs an algorithm that examines horizontal placement of successive characters to determine the presence of spaces. However, this mechanism can be fooled by excessively tight or loose tracking (horizontal spacing of characters) leading to a word gap being interpreted as more than one space or as in this case, no space at all.

Mako 6.3.0 introduced a new API, IPageLayout::setVirtualSpaceThreshold(threshold) to provide control over space detection. The threshold value determines what size of gap is considered a space; the lower the value, the more likely a gap of a given size is deemed to be one. The range of acceptable values is 0.5 to 1.0.

This change relaxes the range to accept any value for 0.0 to 1.0. In the case of the exhibit, a value of 0.4 was found to give the correct result.

MAKO-3721

MAKOSUP-10858 Object flattening issue

The customer file exhibited incorrect display of some Type3 fonts after processing with Mako. The issue was tracked down to an interaction between text knockout and transparency in the Type3 font. Now fixed.

MAKO-3744

MAKOSUP-10866 page->getContent() crashes on a certain PDF

The generator of the exhibit PDF seems to have a bug whereby it can write PDF object numbers that are way out of bounds. Found in this job is a Structure entry with the following reference to a page:

    /Pg 18446744073000648821 0 R

This causes an overflow error as the value evaluates to a negative integer. This error is now caught and no longer causes an exception during processing by Mako.

MAKO-3747

MAKOSUP-10856 ISeparator class not available in C#

This class was omitted from the C# build. It is now available.

MAKO-3717

MAKOSUP-10785 Mako returns swapped mediabox for some PCL5 documents

The PCL5 exhibit was converted to PDF with Mako. When viewed, the landscape page appeared is portrait orientation. To fix this, the predominant text orientation is considered to establish the correct orientation of the converted page.

MAKO-3694

MAKOSUP-10842 Font encoding error in imported pdf

The customer case uses a CIDFont, using an Identity-H CMap, a descendant with an Identity ordering, and a CIDToGIDMap of Identity. That is, the character codes in the PDF map directly to Glyph IDs on the output. This means that if the font is unembedded, the glyphs used are far from guaranteed to be correct, unless you happen to use exactly the same font.

The fix required making use of the ToUnicode CMap that was present in the font descriptor. With this the correct glyph can be identified, even when using a substituted font.

Distribution

MAKO Version 6.3.1 is built for the following platforms:

  • iOS
  • macOS
  • Linux (for Debian-based distributions; for example, Ubuntu, Mint)
  • Linux (Centos)
  • Linux (for Debian Buster) (ARM32 for Raspberry Pi)
  • Linux (for Debian Stretch)
  • Linux (for Debian Bullseye)
  • Linux (for MUSL distributions; for example, Alpine Linux)
  • Linux (for Ubuntu 20.04 LTS)
  • Windows (static and dynamic libs, VS 2019 (V142), x86 and x64)
  • Windows (static and dynamic libs, VS 2017 (V141), x64)
  • Windows UWP (Store apps, Windows 10 IoT)

The Android build has been dropped from this release pending a tooling change. Please contact Mako Support if you need a Mako release for Android later than Mako 6.1.0.

Mako supports the following programming languages:

  • C++ (Mako is written in C++)
  • C# (.Net Framework and .Net Core)
  • Java (built with OpenJDK11)
  • Python (v3.8)

The alternatives to C++ are built using SWIG (www.swig.org), which provides a translation to the native libraries, found in these distribution folders:

  • Linux_SWIG_(C#-Java-Python)
  • Linux_Centos7_SWIG_(C#-Java-Python)
  • Linux_Centos8_SWIG_(C#-Java-Python)
  • Linux_Ubuntu_SWIG_(C#-Java-Python)
  • macOS_SWIG_(C#-Java-Python)
  • Windows_SWIG_(C#-Java-Python)


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.