Composite Fonts

Unlock the functionality of the InDesign CJK (Chinese/Japanese/Korean) version to customize character sets in your fonts.

This script is part of the Output and Prepress Tools collection. See the full collection here

A composite font isn’t really a font, but, rather, a small(ish) file that tells InDesign which font to use as the default font, and which font or fonts for selected ranges of characters. It’s a convenient way to extend a font’s character set or to replace certain character in the default font.

InDesign can work with composite fonts but offers no method to create and maintain them. InDesign CJK, on the other hand, does have a composite-font editor (but it’s not very useful). Why the non-CJK InDesign doesn’t have a composite-font editor is unclear, but as with various other features (such as left–right features and watermarks), scripting APIs are present so that an editor can be scripted.

There are two scripted solutions. One is in-tools‘s editor, which is sold as part of a suite of scripts. Another script is Marc Autret’s Font mixer. A problem with both these scripts you have to enter all the characters that a range extension should cover, which is not much of a problem with a small handful of characters but isn’t doable if you want to add mathematical characters, for example. And Marc’s script allows just one additional range. The script discussed here, on the other hand, allows you to enter Unicode ranges and handles up to eight additional ranges.

A composite-font editor

To use the script, install it in InDesign’s Scripts panel and run it from there. InDesign comes with one built-in composite font, [No Composite Font], which is shown in the editor’s window if you don’t have any composite fonts yet:

The interface

A composite font consists of two or more composite-font entries, and each entry has a few attributes. The entries are in the rows, the attributes, in the columns.

Range name The entry’s name. This is an arbitrary string, you can use any name you like.

Applied font The font to use for the specified range. You select it using the Typeface dropdown at the bottom of the window.

Font style The font style to be used for the selected enry. You select it using the Typeface dropdown at the bottom of the window.

Baseline shift Move the characters up or down (a positive or a negative value). The value is a percentage, not points as in InDesign’s interface.

Scale centre Scale from the centre of the character and preserve its width. The character could overlap the preceding and/or following character.

Horizontal scale Scale the characters in the range range horizontally.

Vertical scale Scale the characters vertically. The point of origin is the baseline.

Relative size Scale the characters horizontally and vertically.

Unicode range Enter one or more Unicode ranges. Unicode values should be entered as 4- or 5-digit hexadecimal characters. Valid entries are 0250-02AF and 2900-297F, 1F800-1F8FF. You can enter single values as well, as in 2100-214F, 2150, 2200-22FF.

Custom characters The characters to be used for the entry. If you entered Unicode ranges, click the G button to the right to generate the characters. InDesign must see a character string, it can’t work with ranges (though the ranges do show up in the composite-font file, see details below).

New font

To create a new composite font, click the New font button and enter a name for the font. A new font is created with a single entry, the base one:

(Note: When you create a new composite font while there’s an open document, the font is available later only when the document is open. To create a composite font that should always be available, close all documents before you run the script. This behaviour compares with all InDesign’s settings: document-only or application-wide.)

In this example we use Minion Pro as the base font. Name and font are the only things you could change for the first entry, you can’t change the baseline shift or the scaling (naturally). Now we’re ready to add some ranges.

The first range we’ll add is one with math characters. Type the name in the first cell of the second row. We use the name Math (the name is arbitrary, you can use anything you like) and we want the composite font to use the math characters from Cambria Math, so we select the font in the Typeface dropdown. The script fills the cells for baseline shift and scaling with default values.

Then in the Unicode range field enter the Unicode ranges. The ranges 2200-22FF, 2A00-2AFF, 27C0-27EF, 2980-29FF cover quite a lot, for now it’ll do. You can always change it later. After entering the Unicode ranges, click the G button on he right to generate the string corresponding to the ranges. That string is entered in the Custom characters field. The field is very small, but you can show the string in a larger window by clicking the S button:

You can make changes to the string; if you do, click OK to enter those changes.

Finally, click the + button to commit this entry to the font.

You can add more entries for other ranges not present in the base font. Remember always to click the + button after creating or changing an entry.

To remove an entry, click the – button.

Font location

Composite fonts live in the CompositeFont folder, which sits next to the Scripts and the Find-Change Queris folders, among others. Click Open CF folder to open the CompositeFont folder.

Packaging

When you package a document that uses one or more composite fonts, those fonts are included in the package.


15 Apr. 2026: Posted.

Peter Kahrel Script Repository
Hosted as a community service, and with deep appreciation, by CreativePro.com


Scripts by Topic | Script Index
Basic Script Installation and Use
How to Modify or Configure These Scripts
Resources for Scripting and Publishing Automation
About This Repository


Repository Home Page


Contact Peter Kahrel


Note to users: You run scripts at your own risk: CreativePro and the author accept no liability for anything that may be caused by any of these scripts. Always take the necessary precautions. We encourage you to save backups and test scripts on copies of your documents.

Bookmark
Please login to bookmark Close

This article was last modified on August 22, 2026

Comments (0)

Leave a Reply

Your email address will not be published. Required fields are marked *

Loading comments...