I'm working on a Python script that converts regular text into the format used by a game. While it mostly functions well, I'm running into issues with how it counts the width of characters. The program gives a warning if the character count exceeds a certain limit, but it seems to miscount characters because it's using default values instead of the specified sizes for certain special characters and tags. I want to adapt this section of the code: `length += kerntab.get(char, kerntabdef)`, because it's not reflecting the custom lengths correctly. Here's a snippet of my code and some definitions of my special character tags and their lengths. I'd love some advice on how to solve this issue!
4 Answers
I noticed a couple of key issues with your logic. First, it looks like your `char` variable doesn't always get the right values from `sedtab`. So whenever it needs to look for widths, it defaults to 6 pixels if it can't find the replacements in `kerntab`. You should clarify these conditions to ensure it checks against `sedtab` correctly.
You might want to incorporate some print statements, especially around lines where you're handling those special characters. For instance, printing the `char` variable can confirm it's correctly picking up values like `[player]`. Check the outputs to see where the process might be failing!
I was thinking about that—seeing the actual values in real time should definitely help pinpoint any discrepancies.
To streamline things, I'd suggest first running `fixline()` to replace your shortcuts, then run `countpx()` to calculate the actual widths based on what's now in `kerntab`. This way, you won't mistakenly count things using defaults. Adjust the approach by focusing on `kerntab` only after you've done replacements.
Great thought! I’ll implement that and see if it resolves the counting inaccuracies!
It's tricky to analyze just this part of the code, but here are two ideas. First, make sure your `fixline()` function runs before `countpx()`. If it's not running in that order, `countpx()` will work with the original line, ignoring the replacements. Add some print statements to debug and confirm the flow.
Also, check if the length calculations may be off because of how you're expecting versus how the counts are computed. For example, does it consider certain symbols as more characters than they really should be?
Right! If the gender symbol is treated as a single character, but it shows as three, that might lead to confusion. Just confirm what you're counting and how - it could be a simple oversight in your character definitions.

Totally right! You can improve the structure, like adding a clear track for replacement and counting widths in separate functions.