function  GFtboxUpdateFonts(FontDetails,handle,OldFontDetails)
    if ~isstruct( FontDetails )
        return;
    end
    S=get(handle);
    if isfield(S,'FontName') && nonEmptyField(FontDetails,'FontName')
        set(handle,'FontName',FontDetails.FontName);
    end
%     if isfield(S,'FontUnits') && nonEmptyField(FontDetails,'FontUnits')
%         set(handle,'FontUnits',FontDetails.FontUnits);
%     end
    if isfield(S,'FontSize') && nonEmptyField(FontDetails,'FontSize')
        if isempty(OldFontDetails.FontSize)
            set(handle,'FontSize', FontDetails.FontSize );
        else
            oldFontSize = get(handle,'FontSize');
            set(handle,'FontSize', ...
                FontDetails.FontSize + oldFontSize - OldFontDetails.FontSize);
        end
    end
  % if isfield(S,'FontWeight') && nonEmptyField(FontDetails,'FontWeight')
  %     set(handle,'FontWeight',FontDetails.FontWeight);
  % end
%     if isfield(S,'FontAngle') && nonEmptyField(FontDetails,'FontAngle')
%         set(handle,'FontAngle',FontDetails.FontAngle);
%     end
    children=get(handle,'children');
    for i=1:length(children)
        child=children(i);
        GFtboxUpdateFonts(FontDetails,child,OldFontDetails);
    end
end

function has = nonEmptyField( s, f )
    has = isfield(s,f) && ~isempty(s.(f));
end
