View Single Post
Old 08-06-2017, 12:30 PM   #2
KevinH
Sigil Developer
KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.
 
Posts: 7,643
Karma: 5433388
Join Date: Nov 2009
Device: many
They are not two signs. They all represent the same character. In unicode \00a0 represent a unicode character whose codepoint value is 160 in decimal notation and 0xA0 in hex code.

So \u00a0 == & nbsp; == & #160; == & #xa0;

these all refer to the exact same character.

The & nbsp; is referred to as a named entity or named character ref. The others are numeric entities. In epub3 named entities are no longer allowed (except for xml reserved named entities).

So Sigil uses & #160; for epub3 and & nbsp; for epub2. Calibre should easily be able to handle either.

If you want Sigil to use another mapping in Codeview for non-breaking spaces, you need to change its Preserve Entities setting. Just do not use a named entity for it with epub3. Using no entity makes the non-breaking space undistinguishable from a regular space and can even cause problems in Codeview (actually a bug in Qt) which is why Sigil always tries to replace them with a proper entity.

Last edited by KevinH; 08-06-2017 at 12:36 PM.
KevinH is offline   Reply With Quote