| 97 | } |
| 98 | |
| 99 | static std::string strip_extension(const std::string & filename) { |
| 100 | auto pos = filename.rfind('.'); |
| 101 | return (pos != std::string::npos) ? filename.substr(0, pos) : filename; |
| 102 | } |
| 103 | |
| 104 | // Sort key: family → size → precision |
| 105 | static int model_sort_key(const std::string & name) { |