Thanks for the query to H.C.M. Forum.
This is a contusion
( blood clot ) underneath the skin and above bone ( usually there are no subcutaneous fat deposition ) hence swelling is there.
As you mentioned that 3 weeks passed after injury & still contusion is there.
Sometimes this may happen and I assure that there will not be any scar. Massage
with ice pack . use serratiopeptidase
tablets after consultation with a doctor as these drugs reduces contusion. Heparin
cream for local application help.
But confirm that there is no hair line fracture
underlying bone ( shin of tibia ) so consult an orthopedician and get his opinion ,if swelling didn't resolve within next 7 days after above treatment.