BabelPad (Unicode Text Editor for Windows)

All
screenshots of BabelPad on babelstone.co.uk are licensed under a Creative
Commons Attribution-ShareAlike 3.0 Unported License (CC-BY-SA-3.0) by Andrew
West.

Overview

BabelPad is a free Unicode text editor for Windows that supports the proper
rendering of most complex scripts, and allows you to assign different fonts to
different scripts in order to facilitate multi-script text editing. It also
provides many useful features and special utilities, as described below.
BabelPad supports the most recent version of the Unicode Standard, currently Unicode 6.3 (released
September 2013).

Summary of Features

User Interface

Swap between Edit Mode and Browser Mode :

Edit Mode allows documents of any size to be edited in plain text
format.

Browser Mode allows the current document to be viewed in an Internet
Explorer browser window.

The user interface menus and other text elements may be displayed in any
of the following languages :

English

Chinese (simplified)

Chinese (traditional)

Multiple instances of BabelPad may be tiled (horizontally, vertically or
patchwork), cascaded, minimized, maximized, restored or closed from the
"Window" menu of any open BabelPad window.

File Features

Open files encoded as :

Unicode : UTF-8

Unicode : UTF-16 (Big Endian or Little Endian)

Unicode : UTF-32 (Big Endian or Little Endian)

Unicode : UTF-7

Unicode : SCSU

Unicode : CESU-8

Unicode 1.0 : UCS-2

Unicode 1.1 : UCS-2

Unicode 1.1 : UTF-7

ISO-8859-1 (Latin1) : Western European

ISO-8859-2 (Latin2) : Non-Cyrillic Central European

ISO-8859-3 (Latin3) : Esperanto, Galician, Maltese, Turkish

ISO-8859-4 (Latin4) : Baltic Rim

ISO-8859-5 (Cyrillic)

ISO-8859-6 (Arabic)

ISO-8859-7 (Greek)

ISO-8859-8 (Hebrew)

ISO-8859-9 (Latin5) : Improved Turkish

ISO-8859-10 (Latin6) : Inuit, Lappish

ISO-8859-11 (Thai)

ISO-8859-13 (Latin7) : Improved Baltic Rim

ISO-8859-14 (Latin8) : Celtic

ISO-8859-15 (Latin9, a.k.a. Latin0) : Improved Western European

ISO-8859-16 (Latin10) : South-Eastern European

Windows CP 874 (Thai)

Windows CP 932 (extension of Shift-JIS) : Japanese

Windows CP 936 (extension of GB2312) : Simplified Chinese

Windows CP 949 (Unified Hangul Code) : Korean

Windows CP 950 (extension of Big5) : Traditional Chinese

Windows CP 1133 (Lao)

Windows CP 1250 (East European)

Windows CP 1251 (Cyrillic)

Windows CP 1252 (West European)

Windows CP 1253 (Greek)

Windows CP 1254 (Turkish)

Windows CP 1255 (Hebrew)

Windows CP 1256 (Arabic)

Windows CP 1257 (Baltic)

Windows CP 1258 (Vietnamese)

EUC-JA (Japanese)

EUC-KR (Korean)

GB18030 (Extended Chinese) : Unicode-mapped superset of GB2312

GB2312 (Simplified Chinese)

Big5 (Traditional Chinese)

Big5-HKSCS (Big5 plus Hong Kong Supplementary Character Set)

Shift-JIS (Japanese) (optionally converting DoCoMo/KDDI/SoftBank emoji
extensions)

JIS X 0201 (Latin plus Katakana)

JIS X 0208 (Japanese)

KPS 9566-2003 (Korean [DPRK])

KSC 5601 (KS X 1001) (Korean)

Wansung (Korean)

Johab (Korean)

KOI8-R (Russian)

KOI8-U (Ukranian)

ARMSCII-8 (Armenian)

VISCII (Vietnamese)

VIQR (Vietnamese Quoted Readable)

TIS-620 (Thai)

Mulelao-1 (Lao)

TSCII (Tamil)

TAM (Tamil Monolingual)

TAB (Tamil Bilingual)

I.S. 434 (Ogham)

Autodetects Unicode encoding forms and character sets declared in HTML or
XML documents.

Automatically convert CR/LF, CR, LF, Line Separator and Paragraph
Separator characters.

Option to convert Numeric Character References (NCR) and/or Universal
Character Names (UCN) to Unicode characters on Open.

Save the current document as :

Unicode : UTF-8 (with or without a Byte Order Mark)

Unicode : UTF-16 Big Endian or Little Endian (with or without a Byte
Order Mark)

Unicode : UTF-32 Big Endian or Little Endian (with or without a Byte
Order Mark)

GB18030 (with or without a Byte Order Mark)

ASCII with Hexadecimal Numeric Character Reference (NCR) substitution of
non Basic Latin characters

ASCII with Decimal Numeric Character Reference (NCR) substitution of non
Basic Latin characters

ASCII with Universal Character Name (UCN) substitution of non Basic
Latin characters

ASCII with HTML Entity substitution of non Basic Latin characters

SCSU (Standard Compression Scheme for Unicode) [encoder/decoder code
kindly supplied by Doug Ewell]

Save line breaks as CR/LF, LF, CR, or as Unicode Line Separator [U+2028]
or Paragraph Separator characters [U+2029].

Edit Features

Left-To-Right (LTR) or Right-To-Left (RTL) page layout.

Line Wrap mode or No Line Wrap mode.

Drag and Drop editing.

Multiple Undo/Redo.

Indent and Unindent selected lines of text using TAB and Shift-TAB.

Option to Auto-Indent text as you type (useful for writing code).

Select a "word" by double-clicking and navigate by "word" by means of the
left/right arrows (works for most Unicode scripts).

Select a line of text by left-clicking in the margin (select a paragraph
by double-clicking in the margin).

Find and Replace functions.

Sorting using the Unicode Collation Algorithm (UCA) or the CLDR Collation
Algorithm, with custom tailorings for some languages, including Tibetan.

Manipulate delimited columns of text (reorder, cut, copy, paste and sort
columns delimited by tabs or any user-specified character or string).

Transcode from one list of characters or code points to another list of
characters or code points

Batch replace one list of text strings with another list of text strings

Select default font and font size from dropdown list on the toolbar.

Configure individual Unicode blocks to always use a particular font
regardless of which font is currently selected for default display.

Status Bar displays code point and Unicode name of the character at the
current caret position.

For CJK ideographs the status bar also displays the Mandarin, Korean or
Vietnamese reading for the character at the current caret position (choice of
reading is user-selectable).

Able to open and edit very large (multi-megabyte) files with little
degredation in performance.

Standard printing functionality enabled.

Text Conversion

Case Conversion (covering all scripts that have upper/lower case
distinctions, including Latin, Greek, Cyrillic, Armenian and Deseret) :

Convert the selected alphabetic text to upper case.

Convert the selected alphabetic text to lower case.

Convert the selected alphabetic text to title case.

Normalization (conforms to the Unicode 6.3 normalization algorithm) :

Convert the selected text to Normalization Form NFD (cannonical
decomposition).

Convert the selected text to Normalization Form NFC (cannonical
composition).

Convert the selected text to Normalization Form NFKD (cannonical
decomposition with compatibility characters replaced).

Convert the selected text to Normalization Form NFKC (cannonical
composition with compatibility characters replaced).

CJK Conversion :

Convert the selected Simplified Chinese text to Traditional Chinese.

Convert the selected Traditional Chinese text to Simplified Chinese.

Entity Conversion :

Convert all HTML Entities (e.g. &uuml;) in the selected text to
Unicode characters.

Convert all non-Basic Latin characters in the selected text to HTML
Entities or hexadecimal Numeric Character References (NCRs).

Convert all Numeric Character References (e.g. &#x00FC; or
&#252;) in the selected text to Unicode characters.

Convert all non-Basic Latin characters in the selected text to
hexadecimal Numeric Character References (NCRs).

Convert all non-Basic Latin characters in the selected text to decimal
Numeric Character References (NCRs).

Convert all Universal Character Names (e.g. \u00FC) in the selected text
to Unicode characters.

Convert all non-Basic Latin characters in the selected text to Universal
Character Names (UCNs).

Convert all characters in the selected text to their Unicode Names (e.g.
LATIN SMALL LETTER U WITH DIAERESIS).

Convert the selected Unicode character name to its corresponding
character

Convert all characters in the selected text to U+XXXX notation (e.g.
U+00FC).

Convert hexadecimal scalar value in front of the caret to a Unicode
character or vice versa by hitting Alt-X (emulates the ALt-X
functionality in Micrososft Word).

Transliteration Conversion :

Convert the selected CJK text to Mandarin pinyin readings.

Convert the selected CJK text to Cantonese jyutping readings.

Convert the selected Extended Wylie Tibetan transliteration to Unicode
Tibetan.

Convert the selected Mongolian transliteration to Unicode Mongolian.

Convert the selected Manchu transliteration to Unicode Manchu.

Convert the selected Yi romanisation to Unicode Yi.

Convert the selected Yi romanisation to International Phonetic Alphabet
(IPA).

Convert the selected Unicode Yi text to Yi romanisation.

Convert the selected Unicode Yi text to International Phonetic Alphabet
(IPA).

Convert the selected Vietnamese Unicode text to VIQR transliteration.

Convert the selected VIQR transliteration to Vietnamese Unicode.

PUA Conversion :

Convert precomposed Tibetan (SetA) to standard Unicode Tibetan.

Convert standard Unicode Tibetan to precomposed Tibetan (SetA).

Convert Hong Kong Supplementary Character Set (HKSCS) PUA characters to
CJK Unified Ideograph characters.

Reordering :

Reverse the order of all selected characters in a line.

Rendering Features

Utilises Microsoft's Uniscribe rendering engine to correctly render
complex text.

Option to render all Unicode characters as individual spacing glyphs (i.e.
with no shaping or ligation of complex text, and combining characters not
combined).

Option to display text in different colours for different Unicode-defined
scripts.

Input Methods

Select any installed Windows Keyboard Layout or IME from a dropdown list
on the toolbar.

Romanised input methods for the following scripts :

Tibetan — using the Tibetan &
Himalayan Digital Library [THDL] Extended Wylie Transcription System
[EWTS]

Manchu — using modified Möllendorff transliteration, as documented on Wikipedia :
Transliterations of Manchu)

Mongolian

Uyghur — using Uyghur Latin
Yëziqi (ULY)

Yi (Nuosu) — using Liangshan Yi Phonetic
Alphabet

Unicode Input Mode :

Enter Unicode characters in the range U+0001 through U+10FFFF as scalar
hexadecimal values (with or without leading zeros), demarcated by pressing
the Space or Return key.

Select One-off Unicode Input Mode by pressing Ctrl+Q (this allows
you to enter a single Unicode character as described above, but on pressing
Space, Enter or Escape you are returned to the original keyboard/IME).

Tools and Utilities

Font Analysis Utility : lists all Unicode blocks covered by a
particular font or lists all fonts that cover a particular Unicode block.

Font Information Utility : provides information about the currently
selected font.

Font Glyph Export Utility : export any or all glyphs from any font
to file in BMP, GIF, JPG or PNG format.

Font Coverage Utility : List all fonts that cover a particular
character or all the characters in a piece of text or all the characters in
the BabelMap edit buffer.

Advanced Character Search Utility : lists all characters that meet
specified criteria.

UCD Data Utility : generates UCD-format data for a given range of
characters for any version of Unicode.

Character History Utility : enumerates the UCD properties for a
given character for all versions of Unicode, including mappings to Unicode
1.0.0 and 1.0.1 where appropriate.

Han Radical Lookup Utility : lists all Han ideographs with a given
radical and number of strokes (covers all 74,616 characters in the CJK, CJK-A,
CJK-B, CJK-C and CJK-D blocks).

Mandarin Pinyin Lookup Utility : lists all Han ideographs with a
given Mandarin pinyin pronunciation.

Cantonese Jyutping Lookup Utility : lists all Han ideographs with a
given Cantonese jyutping pronunciation.

Yi Radical Lookup Utility : lists all Yi syllables with a given
radical and number of strokes.

Unicode Version History Utility : provides a summary of the
repertoire of each version of Unicode from 1.0 onwards.

Document Analysis Utility : provides statistical information about
the current document, and highlights any invalid characters.

Character Frequency Utility : lists all the characters in the
document by frequency.

Undefined Glyphs Utility : lists all characters in the document
which are rendered with an undefined glyph using the currently selected font
(not available when the composite font is selected).

Download

BabelPad Version 6.3.0.0 (supports Unicode 6.3) [2013-10-04]

For an overview of the new features in BabelPad version 6.3.0, please see the
BabelStone
Blog.

BabelPad is distributed as a single executable (no installer). Simply
download the zipped file, and then unzip the file BabelPad.exe to the
desired location on your computer. A help file is
available, but is currently out of date. Windows 95, 98 and Me are no longer
supported, but if you do need a version of BabelPad that runs under Windows
9X/Me (as well as W2K and later), an unsupported build of BabelPad version 1.9.3
(supporting Unicode 4.1.0) is available here.

BabelPad.zip (for
Windows 2000*, XP, Vista, and 7) [3.08 MiB]

* BabelPad requires GDI+ (gdiplus.dll), which may not be installed on
systems running Windows 2000; if this is the case you may download it directly
from Microsoft (here),
and copy the file gdiplus.dll to the same location that BabelPad.exe is run
from.

BabelPad is free and fully functional for personal or commercial use,
but you are welcome to make a small donation via PayPal to help support its
continued development if you wish ($5 or equivalent suggested).

A portable
version of BabelPad is also available for free download from PortableApps.com.

Support

Feature requests, bug reports and general questions or comments about
BabelPad or BabelMap may be made at the BabelStone forum
or directly to me by email.

BabelPad Limitations and Bugs

Horizontal scroll is fixed width, and so some extremely long lines may be
truncated when not in Line Wrap mode.

When in Line Wrap mode, it is not possible to scroll into view the
trailing part of a line that is so long that it does not completely fit onto
the screen.

The Unicode Bidirectional
algorithm has not yet been implemented, and so complex bidirectional text
may not be displayed as expected. However, simple bidirectional text (e.g. a
Hebrew phrase embedded in English text) should display correctly.

Line breaking behaviour does not conform to the Line Breaking Properties
specified by Unicode.

There is an annoying bug that I have been unable to track down yet which
means that occasionally you cannot click correctly on the required position in
the text (you try to click on a particular character but the caret ends up
somewhere else). You can get BabelPad back to normal by simply hitting the F5
key, which will redraw the screen and reset the caret position.

BabelPad Tips

When making global changes to a huge (multi-megabyte) document, first
disable Undo/Redo (Options : Edit Options from the menu). This will
greatly improve the speed of Replace operations.

If you want to convert a large file with a high proportion of characters
above U+007F to UCN (\uABCD) format, NCR (&#xABCD; or &#1234;) format
or HTML entity (&entity;) format, then Save As and select "ASCII
plus ..." from the encoding dropdown list (and then reopen the file if
necessary). This takes a fraction of the time compared with selecting the
entire document and using the appropriate function from the Convert
menu.

If you want to convert a large file with a high proportion of UCN (\uABCD)
or NCR (&#xABCD; or &#1234;) entities to Unicode characters, then
check the Convert NCRs and/or the Convert UCNs checkbox when
opening the file. This takes a fraction of the time compared with selecting
the entire document and using the appropriate function from the Convert
menu after the file has been opened.

To enter a single Unicode character by hexadecimal code point value, press
Ctrl-Q and enter the code point value followed by Enter or Space.

To convert a Unicode hexadecimal code point value to its corresponding
Unicode character place the caret after the last hexadecimal digit and press
Alt-X.

To convert a single Unicode character to its hexadecimal code point value
place the caret after the character and press Alt-X.

To enter a sequence of Unicode characters by hexadecimal code point
values, select the Unicode Input Mode (Input : Unicode from the menu or
"U+" from the Input toolbar), and type in the code point values separated by
spaces. Press Ctrl-D to return to the default input mode.

When entering Tibetan, Mongolian, Manchu or Yi text using BabelPad's
custom input methods for these scripts or entering Unicode text as scalar
values using BabelPad's Unicode input method, you may access the keyboard
normally by using the AltGr key (or Ctrl + Alt if your keyboard does not have
an AltGr key). For example, when using BabelPad's Tibetan Input Method,
pressing the numeral keys will enter Tibetan digits, but holding down the
AltGr key at the same time as pressing the numeral keys will allow Arabic
digits to be entered instead.

If you are working with GB2312-encoded documents open and save your files
as GB18030 (GB18030 is a superset of GB2312 that has a one-to-one mapping to
Unicode).

If you are using a composite font, some characters may be clipped at their
top and/or bottom (this is because the line height for the composite font is
based on the font mapped to the Basic Latin block, but fonts mapped to other
blocks may have significantly higher line heights, especially for scripts such
as Tibetan that have superscript and subscript components). To avoid this
clipping simply increase the line-spacing for the document (drop down list on
the main toolbar, or Ctrl+Shift+MouseWheel).

Uniscribe Issues

BabelPad uses Microsoft's Unicode Script processor, Uniscribe
(filename usp10.dll), to format and render Unicode text. The more recent
a version of Uniscribe you have installed on the computer the better support you
will have for complex scripts such as Indic and south-east Asian scripts,
Tibetan and Mongolian. The version of Uniscribe that BabelPad is using is
indicated in the About BabelPad... dialogue box.

Uniscribe is constantly being updated to support new scripts and to add new
functionality to existing script support, so it is important that you have the
latest possible version of Uniscribe installed on your PC. Even if you do not
use complex scripts, you will only get advanced features for Latin script such
as ligatures with a recent version of Uniscribe (to see this try entering <s
ZWJ t> with Code2000). You may run BabelPad with a particular version of
Uniscribe by simply placing a copy of the Uniscribe file (usp10.dll) in
the same directory that BabelPad.exe is located.

Uniscribe comes pre-installed on Windows 2000 and later, and should also have
been installed if you are running Internet Explorer Version 5 or above on other
Windows operating systems (i.e. Windows 95, 98, ME). If when you attempt to run
BabelPad, a dialog box entitled "Unable to Locate DLL" with the message "The
dynamic link library USP10.dll could not be found in the specified path"
appears, this means that Uniscribe is not installed on your PC.

Some versions of Uniscribe may have bugs that may produce unexpected
rendering behaviour, or even cause BabelPad to crash. Those that I know of are
outlined below :

Versions of Uniscribe greater than Version 1.405.2416.1 may only
work correctly when running under the Windows XP operating system. The
following unexpected display behaviour may be observed in BabelPad's character
map utility when running under Windows 95/98/ME or Windows 2000 with a version
of Uniscribe that is greater than Version 1.405.2416.1 :

Strange characters displayed in the range U+0000 through U+001F of the
Basic Latin block

Strange characters displayed in the range U+0080 through U+009F of the
Latin-1 Supplement block

Only digits displayed for Indic scripts (including Tibetan and
Mongolian) if the selected font does not have OpenType tables defined for
the particular script

Version 1.453.3665.0 has a bug that may cause any application that
relies on it to crash if an attempt is made to display any character in the
Lao script range.

Version 1.460.3707.0 has a bug that may cause any application that
relies on it to crash if an attempt is made to display a sequence of 16 or
more consecutive Tibetan letters without a break (i.e. a space, tsheg or
shad).

Some early versions of Uniscribe may crash when an attempt is made to
display Arabic text with the "Arial Unicode MS" font.

Early versions of Uniscribe have a bug that causes it to return to
BabelPad the wrong character position and screen point of Unicode characters
outside of the Basic Multilingual Plane when in Right-To-Left (RTL) mode. This
means that you may be unable to click on or select text composed of characters
from Unicode Planes 1-16 when in RTL layout mode.

Version 1.626.7600.16385 that ships with Windows 7 causes any
characters in the Supplementary Multilingual Plane (Plane 1) that are nor
defined in Unicode 5.1 to be rendered as two square boxes (this affects
Unicode 5.2 additions such as Avestan, Egyptian Hieroglyphs, Imperial Aramaic,
Inscriptional Pahlavi, Inscriptional Parthian, Kaithi, Old South Arabian, Old
Turkic, Enclosed Alphanumeric Supplement, Enclosed Ideographic Supplement and
Rumi Numeral Symbols). This is fixed in Windows 7 SP1.

Version 1.0626.7601.17514 that ships with Windows 7 SP1 displays
characters in the Variation Selectors Supplement block (U+E0100.E01EF) as two
undefined glyphs, and does not display characters in the Tags block
(E0000..E007F) at all. These characters may be displayed correctly in BabelPad
by disabling Uniscribe (Ctrl+0 [zero]); however complex scripts will not
render correctly in this mode.

BabelMap

BabelStone Home
Page