@@ -120,16 +120,43 @@ end
120120-- ~~| Object Diesal Base |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
121121ObjectBase .CreateRegion = function (self , regionType , regionName , parentRegion , defaultFontObject )
122122 if regionType == ' FontString' then
123- local fontString = parentRegion :CreateFontString ()
123+ -- Try creating with explicit parameters
124+ local fontString = parentRegion :CreateFontString (nil , " OVERLAY" )
125+
126+ -- CRITICAL: Set font IMMEDIATELY and DON'T let anything override it if it fails
127+ -- Start with GameFontNormal which is guaranteed to work
128+ fontString :SetFontObject (_G .GameFontNormal )
129+
124130 -- set Default font properties
125131 if defaultFontObject then
126132 fontString .defaultFontObject = defaultFontObject
127133 else
128- fontString .defaultFontObject = DiesalFontNormal
134+ fontString .defaultFontObject = _G .DiesalFontNormal or _G .GameFontNormal
135+ end
136+
137+ -- ONLY try to apply custom font if we can verify it's valid first
138+ if fontString .defaultFontObject and fontString .defaultFontObject ~= _G .GameFontNormal and type (fontString .defaultFontObject .GetFont ) == " function" then
139+ local success , fontPath , fontSize , fontFlags = pcall (fontString .defaultFontObject .GetFont , fontString .defaultFontObject )
140+ -- Only apply if we got a valid font path
141+ if success and fontPath and fontPath ~= " " then
142+ local fontSuccess = pcall (fontString .SetFont , fontString , fontPath , fontSize or 12 , fontFlags or " " )
143+ -- If custom font failed, font object fallback is still active from SetFontObject above
144+ end
145+ end
146+
147+ -- Set colors and spacing safely
148+ if fontString .defaultFontObject and type (fontString .defaultFontObject .GetTextColor ) == " function" then
149+ local success , r , g , b , a = pcall (fontString .defaultFontObject .GetTextColor , fontString .defaultFontObject )
150+ if success and r then
151+ pcall (fontString .SetTextColor , fontString , r , g , b , a or 1 )
152+ end
153+ end
154+ if fontString .defaultFontObject and type (fontString .defaultFontObject .GetSpacing ) == " function" then
155+ local success , spacing = pcall (fontString .defaultFontObject .GetSpacing , fontString .defaultFontObject )
156+ if success and spacing then
157+ pcall (fontString .SetSpacing , fontString , spacing )
158+ end
129159 end
130- fontString :SetFont (fontString .defaultFontObject :GetFont ())
131- fontString :SetTextColor (fontString .defaultFontObject :GetTextColor ())
132- fontString :SetSpacing (fontString .defaultFontObject :GetSpacing ())
133160
134161 self [regionName ] = fontString
135162 self .fontStrings [regionName ] = fontString
@@ -141,15 +168,47 @@ ObjectBase.CreateRegion = function(self, regionType, regionName, parentRegion, d
141168 end
142169 if regionType == ' EditBox' then
143170 local editBox = CreateFrame (regionType , nil , parentRegion )
171+
172+ -- CRITICAL: Set a font IMMEDIATELY with multiple fallbacks
173+ if _G .GameFontNormal then
174+ pcall (editBox .SetFontObject , editBox , _G .GameFontNormal )
175+ end
176+ pcall (editBox .SetFont , editBox , " Fonts\\ FRIZQT__.TTF" , 12 , " " )
177+
178+ local testFont = editBox :GetFont ()
179+ if not testFont and _G .ChatFontNormal then
180+ pcall (editBox .SetFontObject , editBox , _G .ChatFontNormal )
181+ end
182+
144183 -- set Default font properties
145184 if defaultFontObject then
146185 editBox .defaultFontObject = defaultFontObject
147186 else
148- editBox .defaultFontObject = DiesalFontNormal
187+ editBox .defaultFontObject = _G .DiesalFontNormal or _G .GameFontNormal
188+ end
189+
190+ -- Try to apply custom font if available
191+ if editBox .defaultFontObject and type (editBox .defaultFontObject .GetFont ) == " function" then
192+ local success , fontPath , fontSize , fontFlags = pcall (editBox .defaultFontObject .GetFont , editBox .defaultFontObject )
193+ if success and fontPath then
194+ pcall (editBox .SetFont , editBox , fontPath , fontSize or 11 , fontFlags or " " )
195+ end
149196 end
150- editBox :SetFont (editBox .defaultFontObject :GetFont ())
151- editBox :SetTextColor (editBox .defaultFontObject :GetTextColor ())
152- editBox :SetSpacing (editBox .defaultFontObject :GetSpacing ())
197+
198+ -- Set colors and spacing safely
199+ if editBox .defaultFontObject and type (editBox .defaultFontObject .GetTextColor ) == " function" then
200+ local success , r , g , b , a = pcall (editBox .defaultFontObject .GetTextColor , editBox .defaultFontObject )
201+ if success and r then
202+ pcall (editBox .SetTextColor , editBox , r , g , b , a or 1 )
203+ end
204+ end
205+ if editBox .defaultFontObject and type (editBox .defaultFontObject .GetSpacing ) == " function" then
206+ local success , spacing = pcall (editBox .defaultFontObject .GetSpacing , editBox .defaultFontObject )
207+ if success and spacing then
208+ pcall (editBox .SetSpacing , editBox , spacing )
209+ end
210+ end
211+
153212 editBox :HookScript (' OnEscapePressed' , function (this ) DiesalGUI :ClearFocus (); end )
154213 editBox :HookScript (' OnEditFocusGained' , function (this )
155214 DiesalGUI :SetFocus (this ); GameTooltip :Hide ();
@@ -160,15 +219,46 @@ ObjectBase.CreateRegion = function(self, regionType, regionName, parentRegion, d
160219 end
161220 if regionType == ' ScrollingMessageFrame' then
162221 local srollingMessageFrame = CreateFrame (regionType , nil , parentRegion )
222+
223+ -- CRITICAL: Set a font IMMEDIATELY with multiple fallbacks
224+ if _G .GameFontNormal then
225+ pcall (srollingMessageFrame .SetFontObject , srollingMessageFrame , _G .GameFontNormal )
226+ end
227+ pcall (srollingMessageFrame .SetFont , srollingMessageFrame , " Fonts\\ FRIZQT__.TTF" , 12 , " " )
228+
229+ local testFont = srollingMessageFrame :GetFont ()
230+ if not testFont and _G .ChatFontNormal then
231+ pcall (srollingMessageFrame .SetFontObject , srollingMessageFrame , _G .ChatFontNormal )
232+ end
233+
163234 -- set Default font properties
164235 if defaultFontObject then
165236 srollingMessageFrame .defaultFontObject = defaultFontObject
166237 else
167- srollingMessageFrame .defaultFontObject = DiesalFontNormal
238+ srollingMessageFrame .defaultFontObject = _G .DiesalFontNormal or _G .GameFontNormal
239+ end
240+
241+ -- Try to apply custom font if available
242+ if srollingMessageFrame .defaultFontObject and type (srollingMessageFrame .defaultFontObject .GetFont ) == " function" then
243+ local success , fontPath , fontSize , fontFlags = pcall (srollingMessageFrame .defaultFontObject .GetFont , srollingMessageFrame .defaultFontObject )
244+ if success and fontPath then
245+ pcall (srollingMessageFrame .SetFont , srollingMessageFrame , fontPath , fontSize or 11 , fontFlags or " " )
246+ end
247+ end
248+
249+ -- Set colors and spacing safely
250+ if srollingMessageFrame .defaultFontObject and type (srollingMessageFrame .defaultFontObject .GetTextColor ) == " function" then
251+ local success , r , g , b , a = pcall (srollingMessageFrame .defaultFontObject .GetTextColor , srollingMessageFrame .defaultFontObject )
252+ if success and r then
253+ pcall (srollingMessageFrame .SetTextColor , srollingMessageFrame , r , g , b , a or 1 )
254+ end
255+ end
256+ if srollingMessageFrame .defaultFontObject and type (srollingMessageFrame .defaultFontObject .GetSpacing ) == " function" then
257+ local success , spacing = pcall (srollingMessageFrame .defaultFontObject .GetSpacing , srollingMessageFrame .defaultFontObject )
258+ if success and spacing then
259+ pcall (srollingMessageFrame .SetSpacing , srollingMessageFrame , spacing )
260+ end
168261 end
169- srollingMessageFrame :SetFont (srollingMessageFrame .defaultFontObject :GetFont ())
170- srollingMessageFrame :SetTextColor (srollingMessageFrame .defaultFontObject :GetTextColor ())
171- srollingMessageFrame :SetSpacing (srollingMessageFrame .defaultFontObject :GetSpacing ())
172262
173263 self [regionName ] = srollingMessageFrame
174264 return srollingMessageFrame
@@ -179,7 +269,13 @@ ObjectBase.CreateRegion = function(self, regionType, regionName, parentRegion, d
179269end
180270ObjectBase .ResetFonts = function (self )
181271 for name , fontString in pairs (self .fontStrings ) do
182- fontString :SetFont (fontString .defaultFontObject :GetFont ())
272+ -- Safe font initialization with fallback
273+ local fontPath , fontSize , fontFlags = fontString .defaultFontObject :GetFont ()
274+ if not fontPath then
275+ -- Fallback to WoW default if GetFont returns nil
276+ fontPath , fontSize , fontFlags = " Fonts\\ FRIZQT__.TTF" , 11 , " "
277+ end
278+ fontString :SetFont (fontPath , fontSize , fontFlags )
183279 fontString :SetTextColor (fontString .defaultFontObject :GetTextColor ())
184280 fontString :SetSpacing (fontString .defaultFontObject :GetSpacing ())
185281 end
0 commit comments