Typophile

In Design spaces

Stephen Rapp

Trying to figure out how to get the non-breaking space ( uni00A0 ) working for me in InDesign. I have a type family that I'm working on that uses it contextually. So if you are typing in French and use quotes with a space between text you will get no line breaks even if you type a regular space. I also made the non-breaking space narrower to work better optically.

In Illustrator this feature works just fine, but in InDesign I can't even type in a non-breaking space (option space on mac). The only way I can access it is by double clicking it in the glyph palette. Since its in the feature code, there is a submenu under the regular space for accessing it, but that doesn't switch it either. I'm wondering if InDesign has some way of handling spaces that is disabling this. Any ideas?

I don't use the upper type menu much, but apparently that is where the answer lies. It looks like InDesign controls all types of space options through the menu only using the standard space character and not the non-breaking space character. So you can get it to behave like a you want (more or less) but its not actually referencing the uni00a0 character slot. So in InDesign I can use French quotes and insert what they call a punctuation space and it will act correctly, but the width of that space is determined by the application rather than the width set in the font.

Why not set your sentence in InDesign, then export an InDesign tagged text file, and open it up with something like EditPad Pro and see what characters are there?

I would think if you swapped a space with 0A00 using contextual subsitution in the font, InDesign would honor that. In general, we'd be in trouble if ID changed Unicode characters without being told to do so.

Further, I believe 0A00 is not a "justifying" space in InDesign. That is, it has a value, and that value doesn't change in justified copy. There is a nobreak *function* in InDesign; that is the thing to use for preventing an end-of-line break.

Further, I'm against turning 0A00 into a thin space in principle, though not in practice. Not in practice because I avoid it like the plague; no telling what some type designer has put there.

There are a a series of spaces in Unicode from 2002 to 200B that can be filled in, 1- 2- 3- 4- 5- to the em, plus "number space", "punctuation space" "thin space" "hairspace" and "zerowidth space". Try these; they have explicit meanings.

FWIW, when I rework a font, I "make" these characters up. I know that 200B, 2007, and 2008 work; I've used them in jobs. (Yes, 2007 and 2008 mirror the ID figure & punctuation space, I never tested if ID did anything to these if they were entered directly using Unicode rather than the pull-down menu. After what you've written, I guess I will. If they change the values, I'm filing a bug report.)

Which brings me to another "further" -- this sort of spacing is the compositor's job. Lots of things get screwed up when the type designer tries to do the compositor's job. Motives may be good; trying to protect the world from bad composition. But you can't.

Thanks for the reply Charles.

As far as I was aware, the uni00A0 slot was intended to be used along with French quotes and other places to avoid a line break. I'm still pretty new to ID was pretty amazed to find how many special space options it has. In general I find that nice. The drawback I found after messing with it a bit is if you want a non-breaking space in ID the only option appears to be a full space. With French quotes a full space can look too wide.

I was amazed that I couldn't even select uni00A0 as an option. ID seemed to override that. Its not really a problem for me as anyone using the font still has all the options that ID provides. You do have a point about it being the compositors job, but with OpenType technology and layout engines like ID, much of that is inherent anyway. I suppose the compositor or typesetter just has to be aware of what the applications handle.

Stephen, I was a bit churlish. It is Sunday, I sprained my back, have a cold, and the cat decided my favorite chair was just the place for her morning nap.

Excuses out of the way, let's ramble a bit.

I view 0A00 as a legacy character, just like the accents in the Latin Supplement(?) area. A lot of fonts I've seen assign a value of 500/1000 to 0A00; I have no idea why -- maybe a way to get an en-space for applications that don't have it?

I also understand that a type designer may want to provide for layout with older or less sophisticated layout programs. That's fine, but my feeling is that such provisions shouldn't get in the way of those using current technology. So for instance, any of the older programs that don't support OpenType features won't make the substitution you propose anyway. To write a feature they won't apply that also gets in the way using programs that do makes little sense.

Then there is the question of just how big that space between the quote and the word (in French) should be. I'm no expert on the French language & it's varying styles, but I'd guess it should be less that a word space. And a word space in justified copy can be what, 75% of the nominal value you assign to the word space? So, you have a choice of a 4-to-em or 5-to-em in the 2000-200B block. Those are defined spaces. Or you can use a thin or hair space U+2009 & U+200A (?), which don't have explicit values. Some take a thin to be a 5-to-em, I prefer a 6-to-em. For me, a "hairspace" is .055 on a 1,000 unit em. But that's my experience, not a standard.

So you could write your substitution using one of these Unicode spaces, and I'd think it would work in InDesign. I don't know about Illustrator. And if I, as a comp, am entering the string, I'll put in my own value in setting copy, which should block your substitution. So it is not too bad from a comp's viewpoint; at least one can work with it.

* * *

An example: Some publishers want a thinspace surrounding a closed-up solidus. Like a lot of shops setting extended text, we pre-process files, and in times past, had a routine that inserted a thinspace around a closed-up solidus. But if the publisher also put in such a code, we now have two thin spaces here. I finally took a brute force approach, and ran a second search which allowed only one thinspace in succession. (Later, I just kerned the solidus (slash) with every character, as this is the only way to get even spacing. Then we had to strip any publisher-inserted thinspaces, as they would block kerning.)

A second example: In an early version of Cycles or maybe Stone Print, Sumner decided that too many comps set small caps without letterspacing, so he gave small caps sidebearings that automatically spaced them. Great, until you have to set cap-small cap. I called him up & pointed this out, then I redid all the small cap sidebearings in the font. Yes, we had to letterspace, but at least we got over the problem of having a Cap way to tight to a following small cap, without being able to letterspace the phrase because of the sidebearings in the small caps.

Just a couple of cases where the comp can get frustrated by someone's "help."

* * *

So if the applications that allow for OT contextual substitutions will all honor a U+200() character, that is your answer. If one or more won't, or will break a line at point (i.e., see it as a word boundary) you have a decision to make. But any comp worth his/her salt will spot such a break, and use the nobreak *feature* to prevent it.

Sorry for the questions marks around the Unicode numbers, I've decided not to keep a Unicode book, InDesign, or FontLab at home.

FWIW

I'm not sure if ID will support other space character substitutions or not. It certainly wouldn't take uni00A0, but as you said— that may be considered legacy. On the Microsoft page on space characters it does mention that some French typographers prefer a narrower non-break space. I've not as yet worked with any of the other unicode space characters and see I have much to learn.

The type family I'm working on is a titling series using caps and smallcaps. The characters are extended width and so the default spacing is somewhat generous. So using full space marks in some places does seem excessive. In creating a PDF file for it in ID I did start using some of the alternate spaces that ID provides.

At this point I do realize I've much to learn. This is my first design that isn't based on calligraphy or hand-lettering. Although I work some with type at my day job, its for greeting cards and tends to be much less sophisticated that what a book designer might use.
Fortunately there are knowledgeable folks like yourself on this forum. I do understand your point about allowing the end user to choose the setting as opposed to programming it in the font. With my script faces I've been trying to find a good compromise with that. I put in lots of contextual alternates and ligatures for a more natural flowing script, but try to go easy with letters that are either swashy or more unusual. Stylistic sets is real useful for a lot of the more flourishing touches.

Thanks for your help.

Stephen,

OK, I tried a simple test in InDesign (CS2). I entered all the Unicode spaces from U+2002 to 200B using a font where I had given all of them a specific value.

1. The screen showed about what you would expect for spacing.

2. Exported an InDesign Tagged Text file (verbose, Unicode). The special spaces were there (that is, the correct Unicode character was there).

3. Made a PDF. The spacing looked right on the PDF. Of course, a PDF is a name-base file (not Unicode), so the characters didn't appear to be "there". I suspect the only thing in the PDF was spacing information, but it would take someone with more familiarity with Adobe PDF's to tell you for sure.

4. Since the spacing was present in the PDF file, that's all you need. You wouldn't want to export those characters from the PDF in any case; for your purpose, they are "font specific."

5. For the heck of it, I also entered the the available characters from

Type > Insert White Space

and wrote that off to an InDesign tagged text file. The characters used were from the same U+2002 through 200B region, except the nobreak space, which was of course U+00A0.

I did a quick test, and ID didn't seem to allow a line break with any of these characters except the zerowidth space (U+200B). (I did forget to check the nobreak space, as I don't use it.)

With the possible exception that this was a pretty quick test, I'd say you're good to go as soon as you pick your value, make sure the character is in your font, and write your feature.

I think the confusion you're having may be from trying to "find" those characters in a PDF. Again, I suspect all that makes it through is spacing instructions.

FWIW

Give the nbsp a recognizable image and see what ID and its PDF show?

It's an entirely justifiable choice by Adobe if they actually use the regular space character, with their type engine providing special character handling. After all, they also have en, em, half, third, sixth, fixed and 'spacing' fixed spaces.

Perhaps Miguel Sousa wants to comment on this.

What version of InDesign are you using, Stephen?

IIRC, this behavior was changed in CS4, specifically because of complaints from type designers/developers. Eric Menninga would be the person to confirm that.

Regards,

T

Just a correction: Somewhere up there I said I used .055 on a 1000-unit em for a hairspace. Uh, no. What I meant was 55 on a 1000-unit em. Or .055 of an em ... YMMV

In earlier versions of ID, we didn't bother checking to see if the font contained the fixed width spaces because almost none of them did. We later (CS3?) did check the font first. You should be able to handle different space glyphIDs in feature tables.

Here's what Eric posted to the ATypI mailing list on 7 August 2007:

-- In earlier versions of InDesign (pre-CS2) we did exactly what Vincent wrote: we didn't ask the font about all of the space characters, we did them ourselves. However, we currently ask the font for glyphs for the space character variants and we only "fake" them if the font doesn't support them.

-- Here are the spaces we are prepared to handle. If the font has this character, we will use it. If not, the width stated is used.

Space (u0030)
No-break space (u00A0)
Narrow no-break space (u202f) -- this is the non-justifying no-break space

(These are CS3 values. Pre-CS3, the no-break space was generally non-justifying and there wasn't alternative.)

En space (u2002) = 0.5 M
Em space (u2003) = 1.0 M
Third-em space (u2004) = M / 3 = 0.333
Quarter-em space (u2005) = M / 3 = 0.250
Medium math space (u205f) = 4/18 M = 0.222
Sixth-em space (u2006) = M / 6 = 0.1667
Thin space (u2009) = M / 8 = 0.125
Hair space (u200A) = M / 24 = 0.041667
Figure space (u2007) = width of '0'
Punctuation space (u2008) = width of '.'

-- Note: we "stole" em-quad (u2001) to use as the flush space. I don't know the history of "medium math space" but it is clearly defined in Unicode.

Captured from web.archive.org on 12 Nov 2014. view this capture