18 options = [
" -depsc2 "];
22 options = [options varargin];
25 if numel(name) < 5 || ~strcmpi(name(end-3:end),
" .eps ")
26 name = [name
" .eps "];
30 font_handles = findall(fig,
" -property ",
" FontName ");
31 fonts =
get(font_handles,
" FontName ");
36 fontsl = lower(fonts);
37 for a = 1:numel(fonts)
41 case [
" times ",
" timesnewroman ",
" times-roman "]
42 fontsl[a] =
" times-roman ";
43 case [
" arial ",
" helvetica "]
44 fontsl[a] =
" helvetica ";
45 case [
" newcenturyschoolbook ",
" newcenturyschlbk "]
46 fontsl[a] =
" newcenturyschlbk ";
50 fontslu = unique(fontsl);
52 matlab_fonts = [
" Helvetica ",
" Times-Roman ",
" Palatino ",
" Bookman ",
" Helvetica-Narrow ",
" Symbol ", ...
53 " AvantGarde ",
" NewCenturySchlbk ",
" Courier ",
" ZapfChancery ",
" ZapfDingbats "];
54 matlab_fontsl = lower(matlab_fonts);
55 require_swap = find(~ismember(fontslu, matlab_fontsl));
56 unused_fonts = find(~ismember(matlab_fontsl, fontslu));
57 font_swap =
cell(3, min(numel(require_swap), numel(unused_fonts)));
59 for a = 1:size(font_swap, 2)
60 font_swap[1,a] = find(strcmp(fontslu[require_swap(a)], fontsl));
61 font_swap[2,a] = matlab_fonts[unused_fonts(a)];
62 font_swap[3,a] = fonts[font_swap[1,end](1)];
63 fonts_new(font_swap[1,a]) = [font_swap[2,a]];
66 if ~isempty(font_swap)
67 fonts_size =
get(font_handles,
" FontSize ");
69 fonts_size = cell2mat(fonts_size);
71 M =
false(size(font_handles));
74 update = zeros(1000, 1);
78 M(a) = ~isequal(
get(font_handles(a),
" FontName "), fonts_new[a]) || ~isequal(
get(font_handles(a),
" FontSize "), fonts_size(a));
80 set(font_handles(a),
" FontName ", fonts_new[a],
" FontSize ", fonts_size(a));
90 [update, M] = unique(update(1:c));
92 update = reshape(update(M), 1, []);
95 old_pos_mode =
get(fig,
" PaperPositionMode ");
96 old_orientation =
get(fig,
" PaperOrientation ");
97 set(fig,
" PaperPositionMode ",
" auto ",
" PaperOrientation ",
" portrait ");
100 white_text_handles = findobj(fig,
" Type ",
" text ");
101 M =
get(white_text_handles,
" Color ");
106 black_text_handles = white_text_handles(M == 0);
107 white_text_handles = white_text_handles(M == 3);
109 set(black_text_handles,
" Color ", [0 0 0] + eps);
110 set(white_text_handles,
" Color ", [1 1 1] - eps);
112 print(fig, options[:], name);
114 set(black_text_handles,
" Color ", [0 0 0]);
115 set(white_text_handles,
" Color ", [1 1 1]);
117 set(fig,
" PaperPositionMode ", old_pos_mode,
" PaperOrientation ", old_orientation);
119 if ~isempty(font_swap)
122 set(font_handles(a),
" FontName ", fonts[a],
" FontSize ", fonts_size(a));
125 font_swap = font_swap(2:3,:);
127 swap_fonts(name, font_swap[:]);
129 warning(
" swap_fonts() failed. This is usually because the figure contains a large number of patch objects. Consider exporting to a bitmap format in this case. ");
137 warning(
" fix_lines() failed. This is usually because the figure contains a large number of patch objects. Consider exporting to a bitmap format in this case. ");
144 fh = fopen(fname,
" r ");
146 error(
" File %s not found. ", fname);
149 fstrm = fread(fh,
" *char ")^
t;
157 for a = 1:2:numel(varargin)
158 fstrm = regexprep(fstrm, [varargin[a]
" -?[a-zA-Z]*> "], varargin[a+1](~isspace(varargin[a+1])));
162 fh = fopen(fname,
" w ");
164 error(
" Unable to open %s for writing. ", fname2);
167 fwrite(fh, fstrm,
" char*1 ");
function fix_lines(fname, fname2)
FIX_LINES Improves the line style of eps files generated by print.
A MatLab cell array or matrix.
function print2eps(name, fig, varargin)
A variable number of input arguments.
function print2eps>swap_fonts(fname, varargin)