There's a simple solution to your problem: just encode your source file as UTF-8 and change all the null field markers to the actual en-dash in your source.
However, I don't think this will achieve the formatting you actually want, since when you put two en-dashes together, they will not have any space between them (unlike the hyphen characters.) So probably what you need is a bit more complicated, since you need to add some space after each en-dash to show the null fields as individual elements.
So here's another solution using XeLaTeX: create a custom map file which maps the hyphen into an en-dash with a non-breaking space. The following instructions work on a Mac or Linux machine; the same thing can be done in Windows but I don't know how, although you can get directions in the link below.
First, dowload and install the
TECkit software from SIL:
Next, make the following map file (plain text file, named hyphen-dash.map). This file maps '-' into an en-dash+non-breaking space.
; Hyphen to emdash mapping file for XeTeX
U+002D <> U+2013 U+00A0 ; "-" -> "– "
Next, compile this file using the following command from the command line:
teckit_compile hyphen-dash.map -o hyphen-dash.tec
hyphen-dash.tec file to your local texmf folder in
Now you can compile the following xelatex document:
% !TEX TS-program = XeLaTeX
Without the hyphen mapping: regular hyphens and dashes:
What happens when you put two en-dashes directly together:
Now with the mapping file enabled:
This solution can be used inside other macros: