How can I disable font smoothing within a legend?
    6 views (last 30 days)
  
       Show older comments
    
I want to globally disable font smoothing for all text entries within figures, since smoothed text looks very poor on my display.
I tried:
set(groot, 'DefaultTextFontSmoothing', 'off');
set(groot, 'DefaultAxesFontSmoothing', 'off');
which seems to work for xlabel(), title(), etc. but not for the text within legends.
I am using Matlab R2015a.
0 Comments
Accepted Answer
  Brian C Coe
      
 on 30 May 2019
        
      Edited: Brian C Coe
      
 on 18 Jun 2019
  
      function [leg,labelhandles,outH,outM] = legend2(varargin)
% function [leg,labelhandles,outH,outM] = legend2(varargin)
% quite possibly the stupidest code i ever had to hack-up to get around a matlab stupidity.
% call 'legend2' instead of 'legend' to remove the noisy font smoothing.
% still can't figure out how to remove the graphicssmoothing, however.
% 2019may31 ~bcoe
if isempty(varargin)
    help(mfilename)
    return
end
[leg,labelhandles,outH,outM] = legend(varargin{:});
for ii=1:length(leg.ItemText)
    leg.ItemText(ii).FontSmoothing='off';
    % leg.ItemTokens(ii).graphicssmoothing='off'; %still trying to kill linesmoothing
end
 call 'legend2' instead of 'legend'... (-sigh-)
0 Comments
More Answers (1)
  Cindy Solomon
    
 on 22 Apr 2015
        Hi HoBe,
In order to turn off the font smoothing of a legend, you can set the FontSmoothing property of a text object that is a child of the legend. For example:
plot(1:10)
[h,objs] = legend('one')
objs(1).FontSmoothing='off'
Since the legend is no longer a child of the axis, changing the FontSmoothing property of the axis does not have any impact on the legend. Hope this helps!
See Also
Categories
				Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!