Skip to main content
Skip table of contents

Mako 6.2.1 Release Notes


Introduction

These release notes are presented in terms of the development tasks (MAKO-XXXX) that had to be undertaken to complete this release. Only items of significance – those that add new features / improvements in this release or address identifiable support issues (labelled MAKOSUP-XXXXX) – are included.

New and Updated Features

MAKO-3488

MAKOSUP-10770 Missing glyphs regression

This issue concerned the customer’s workflow that involved first processing a PDF with Mako, then rendering the result with Mako. An error in the initial PDF processing led to a character being dropped during subsequent processing and therefore missing from rendered output. Now fixed.

MAKO-3492

Characters missing from mako_mark_knockout.ijp output

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

MAKO-3496

Stitched IJPDS output should not have a fixed page length

An issue with the IJPDS input class, IIJPDSInput. The exhibit (vendor.ijp) reported an incorrect page size when stitched. Now corrected.

MAKO-3509

Incorrect page size when stitched and rotated 90° or 270°

An issue with the IJPDS input class, IIJPDSInput. The exhibit (vendor.ijp) reported an incorrect page size when rotated to landscape. Now corrected.

MAKO-3491

Return additional IJPDS job information

The customer expects the count of pages to be the same as the number of input pages on the job, regardless of the number of rips. Mako generates one page for each page/rip combination, so it doesn't always match to that expectation.

Providing the customer can find out the total number of pages and number of rips then they can calculate the number of input pages – it is then simple math to map from [inputPageNo, ripNo] -> pageNo

To support this easily (without breaking the API) new properties are added to the IDOMFixedPage class. The properties are:

Property

Type

Information returned

InputPageNo

PValue::T_INT

The input page number, starts at 0

RipId

PValue::T_INT

The rip number, starts at 0 but can be -1 which indicates a blank page

ResX

PValue::T_INT

Job X resolution

ResY

PValue::T_INT

Job Y resolution

This is a code example for obtaining a property from an IDOMFixedPage:

CPP
IDOMFixedPagePtr fixedPage = page->getContent();
PValue propertyValue;
fixedPage->getProperty("InputPageNo", propertyValue);
int32 inputPageNo = propertyValue.getInt32();

The total number of output pages is returned by getNumPages().

To get the number of rips in the job, loop through the first few pages and count the number of pages whose InputPageNo is 0. This will yield the number of rips.

MAKO-3490

Remove use of variable arguments in IDOMColor::create()

This is a “tidying up” of the IDOMColor::create() method that was necessary to ensure consistency with other bindings, such as C# & Java. Previously, it was possible to provide a variable number of arguments, to match the number of color channels of the specified color space. As these vary by color space, a variable number of values could be supplied, and it was up to the caller to make sure the correct number of values was added. Now, the number of component parameters can be 1, 2, 3, 4, 5, 6 or 32 and are treated in this way:

  • 1-6 parameters: checks that the number of components passed in match the number of components required by the colorspace (gray, RGB, CMYK, CMYKOG etc.)
  • 32 parameters: a minimum of 7 components, the rest are optional with a default value of 0. This variant does NOT check the number of components required by the colorspace

While this change does not require code changes, it is possible that an exception will be thrown by existing code that happens not to supply the correct number of component value parameters to calls of this method.

The IDOMColor::createFromVect() and IDOMColor::createFromArray() methods are unchanged.

Distribution

MAKO Version 6.2.1 is built for the following platforms:

  • iOS
  • macOS
  • Linux (for Debian-based distributions, eg Ubuntu, Mint)
  • Linux (Centos)
  • Linux (for Debian Buster) (ARM32 for Raspberry Pi)
  • Linux (for Debian Stretch)
  • Linux (for MUSL distributions, eg 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)

Note that 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_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.